C++ 简单的控制台贪吃蛇小游戏

  由于比较懒,所以不怎么写,觉得这样不应该。我应该对自己学的做出整理,不管是高端低端,写出来是自己的。

C++ 简单的控制台贪吃蛇小游戏

  1 // 贪吃蛇.cpp : 定义控制台应用程序的入口点。
  2 //
  3 
  4 #include "stdafx.h"
  5 #include<iostream>
  6 #include"Windows.h"
  7 #include<ctime>
  8 
  9 
 10 nData g_Snake[20];
 11 nData g_Food;
 12 
 13 using namespace std;
 14 int _tmain(int argc, _TCHAR* argv[])                                                            
 15 {
 16     int nKeyState = 0;
 17     int nSnakeMove = 5;
 18     int nSnakeLeng = 1;
 19     bool bSnake = false;
 20     
 21 
 22     //初始化食物
 23     srand((unsigned)time(NULL));
 24     g_Food.X = rand() % 18 + 1;
 25     g_Food.Y = rand() % 18 + 1;
 26     
 27     //初始化蛇头
 28 
 29     g_Snake[0].X = 5;
 30     g_Snake[0].Y = 6;
 31 
 32     while (true)
 33     {
 34         system("CLS");
 35         //开始菜单键盘输入
 36         if (nKeyState < 3)
 37         {
 38             if (KEY_DOWN(VK_DOWN))
 39             {
 40                 nKeyState++;
 41                 if (nKeyState > 2)
 42                 {
 43                     nKeyState = 0;
 44                 }
 45             }
 46             else if (KEY_DOWN(VK_UP))
 47             {
 48                 nKeyState--;
 49                 if (nKeyState < 0)
 50                 {
 51                     nKeyState = 2;
 52                 }
 53             }
 54             else if (KEY_DOWN(VK_RETURN))
 55             {
 56                 if (nKeyState == e_Menu_StartGame)
 57                 {
 58                     nKeyState = e_GO_StartGame;
 59                 }
 60             }
 61         }
 62         //蛇动作
 63         else if (nKeyState == e_GO_StartGame)
 64         {
 65             //备份蛇头
 66             g_Snake[0].XOD = g_Snake[0].X;
 67             g_Snake[0].YOD = g_Snake[0].Y;
 68 
 69             if (KEY_DOWN(VK_UP))
 70             {
 71                 if (nSnakeMove == e_Move_Down)
 72                 {
 73                     nSnakeMove = e_Move_Down;
 74                 }
 75                 else
 76                 {
 77                     nSnakeMove = e_Move_Up;
 78                 }
 79             }
 80             else if (KEY_DOWN(VK_DOWN))
 81             {
 82                 if (nSnakeMove == e_Move_Up)
 83                 {
 84                     nSnakeMove = e_Move_Up;
 85                 }
 86                 else
 87                 {
 88                     nSnakeMove = e_Move_Down;
 89                 }
 90             }
 91             else if (KEY_DOWN(VK_LEFT))
 92             {
 93 
 94                 if (nSnakeMove == e_Move_Right)
 95                 {
 96                     nSnakeMove = e_Move_Right;
 97                 }
 98                 else
 99                 {
100                     nSnakeMove = e_Move_Left;
101                 }
102             }
103             else if (KEY_DOWN(VK_RIGHT))
104             {
105                 if (nSnakeMove == e_Move_Left)
106                 {
107                     nSnakeMove = e_Move_Left;
108                 }
109                 else
110                 {
111                     nSnakeMove = e_Move_Right;
112                 }
113             }
114         }
115         switch (nSnakeMove)
116         {
117         case e_Move_Up: g_Snake[0].X--; break;
118         case e_Move_Down: g_Snake[0].X++; break;
119         case e_Move_Left: g_Snake[0].Y--; break;
120         case e_Move_Right: g_Snake[0].Y++; break;
121         }
122 
123         //蛇撞墙
124         if (nGameFrame[g_Snake[0].X][g_Snake[0].Y] == 1)
125         {
126             nKeyState = e_GO_GameOver;
127         }
128         //过关
129         if (nSnakeLeng == 20)
130         {
131             nKeyState = e_Go_WinGame;
132         }
133 
134 
135         //蛇吃到自己`
136         for (int i = 4; i <= nSnakeLeng; i++)
137         {
138             if (g_Snake[i].X == g_Snake[0].X&&g_Snake[i].Y == g_Snake[0].Y)
139             {
140                 nKeyState = e_GO_GameOver;
141             }
142         }
143 
144         //遍历蛇身位置
145         for (int i = 1; i < nSnakeLeng; i++)
146         {
147             g_Snake[i].XOD = g_Snake[i].X;
148             g_Snake[i].YOD = g_Snake[i].Y;
149             g_Snake[i].X = g_Snake[i - 1].XOD;
150             g_Snake[i].Y = g_Snake[i - 1].YOD;
151         }
152 
153         //吃到食物
154         if (g_Food.X==g_Snake[0].X&&g_Food.Y==g_Snake[0].Y)
155         {
156             srand((unsigned)time(NULL));
157             g_Food.X = rand() % 18 + 1;
158             g_Food.Y = rand() % 18 + 1;
159             nSnakeLeng++;
160         }
161 
162         //渲染.
163         if (nKeyState < 3)
164         {
165             cout << "■■■■■■■■■■■■■■■■■" << endl;
166             cout << "■■■■■■■■■■■■■■■■■" << endl;
167             cout << "■■■■                  ■■■■" << endl;
168             if (nKeyState == e_Menu_StartGame)
169             {
170                 cout << "■■■■   >-开始游戏     ■■■■" << endl;
171                 cout << "■■■■     游戏设置     ■■■■" << endl;
172                 cout << "■■■■     游戏结束     ■■■■" << endl;
173             }
174             else if (nKeyState == e_Menu_GameSet)
175             {
176                 cout << "■■■■     开始游戏     ■■■■" << endl;
177                 cout << "■■■■   >-游戏设置     ■■■■" << endl;
178                 cout << "■■■■     游戏结束     ■■■■" << endl;
179             }
180             else if (nKeyState == e_Menu_EndGame)
181             {
182                 cout << "■■■■     开始游戏     ■■■■" << endl;
183                 cout << "■■■■     游戏设置     ■■■■" << endl;
184                 cout << "■■■■   >-游戏结束     ■■■■" << endl;
185             }
186             cout << "■■■■                  ■■■■" << endl;
187             cout << "■■■■■■■■■■■■■■■■■" << endl;
188             cout << "■■■■■■■■■■■■■■■■■" << endl;
189         }
190         else if (nKeyState==e_GO_StartGame)
191         {
192             for (int i = 0; i < 20; i++)
193             {
194                 for (int a = 0; a < 20; a++)
195                 {
196                     for (int n = 1; n < nSnakeLeng; n++)
197                     {
198                         if (i == g_Snake[n].X&&a == g_Snake[n].Y)
199                         {
200                             bSnake = true;
201                             break;
202                         }
203                         else
204                         {
205                             bSnake = false;
206                         }
207                     }
208                     if (nGameFrame[i][a] == 1)
209                     {
210                         cout << "";
211                     }
212                     else if (i == g_Snake[0].X&&a == g_Snake[0].Y)
213                     {
214                         cout << "";
215                     }
216                     else if (bSnake == true)
217                     {
218                         cout << "";
219                     }
220                     else if (i == g_Food.X&&a == g_Food.Y)
221                     {
222                         cout << ""; 
223                     }
224                     else
225                     {
226                         cout << "  ";
227                     }
228                 }
229                 cout << endl;
230             }
231         }
232         else if (nKeyState == e_GO_GameOver)
233         {
234             cout << "GAME OVER"<<endl;
235         }
236         else if (nKeyState==e_Go_WinGame)
237         {
238             cout << "老铁666!"<<endl;
239         }
240 
241     }
242     return 0;
243 }

控制台贪吃蛇小游戏

 

原文链接: https://www.cnblogs.com/kpxy/p/9581123.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++ 简单的控制台贪吃蛇小游戏

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/280556

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 上午5:01
下一篇 2023年2月15日 上午5:03

相关推荐