C++贪吃蛇游戏代码实现 - 简单易懂的教程
{"title":"C++贪吃蛇游戏代码实现 - 简单易懂的教程", "description":"本文提供了一个简单的C++代码实现贪吃蛇游戏的例子,包含游戏设置、绘制、输入、逻辑等部分,并详细讲解了代码的实现过程。", "keywords":"C++, 贪吃蛇, 游戏, 代码, 实现, 教程", "content":"#include "iostream"\n#include "conio.h"\n#include "windows.h"\n\nusing namespace std;\n\nbool gameOver;\nconst int width = 20;\nconst int height = 20;\nint x, y, fruitX, fruitY, score;\nint tailX[100], tailY[100];\nint nTail;\nenum Direction { STOP = 0, LEFT, RIGHT, UP, DOWN };\nDirection dir;\n\nvoid Setup()\n{\n gameOver = false;\n dir = STOP;\n x = width / 2;\n y = height / 2;\n fruitX = rand() % width;\n fruitY = rand() % height;\n score = 0;\n}\n\nvoid Draw()\n{\n system("cls");\n for (int i = 0; i < width + 2; i++)\n cout << "#";\n cout << endl;\n\n for (int i = 0; i < height; i++)\n {\n for (int j = 0; j < width; j++)\n {\n if (j == 0)\n cout << "#";\n if (i == y && j == x)\n cout << "O";\n else if (i == fruitY && j == fruitX)\n cout << "F";\n else\n {\n bool printTail = false;\n for (int k = 0; k < nTail; k++)\n {\n if (tailX[k] == j && tailY[k] == i)\n {\n cout << "o";\n printTail = true;\n }\n }\n if (!printTail)\n cout << " ";\n }\n if (j == width - 1)\n cout << "#";\n }\n cout << endl;\n }\n\n for (int i = 0; i < width + 2; i++)\n cout << "#";\n cout << endl;\n cout << "Score:" << score << endl;\n}\n\nvoid Input()\n{\n if (_kbhit())\n {\n switch (_getch())\n {\n case 'a':\n dir = LEFT;\n break;\n case 'd':\n dir = RIGHT;\n break;\n case 'w':\n dir = UP;\n break;\n case 's':\n dir = DOWN;\n break;\n case 'x':\n gameOver = true;\n break;\n }\n }\n}\n\nvoid Logic()\n{\n int prevX = tailX[0];\n int prevY = tailY[0];\n int prev2X, prev2Y;\n tailX[0] = x;\n tailY[0] = y;\n for (int i = 1; i < nTail; i++)\n {\n prev2X = tailX[i];\n prev2Y = tailY[i];\n tailX[i] = prevX;\n tailY[i] = prevY;\n prevX = prev2X;\n prevY = prev2Y;\n }\n\n switch (dir)\n {\n case LEFT:\n x--;\n break;\n case RIGHT:\n x++;\n break;\n case UP:\n y--;\n break;\n case DOWN:\n y++;\n break;\n }\n\n if (x >= width)\n x = 0;\n else if (x < 0)\n x = width - 1;\n\n if (y >= height)\n y = 0;\n else if (y < 0)\n y = height - 1;\n\n for (int i = 0; i < nTail; i++)\n {\n if (tailX[i] == x && tailY[i] == y)\n gameOver = true;\n }\n\n if (x == fruitX && y == fruitY)\n {\n score += 10;\n fruitX = rand() % width;\n fruitY = rand() % height;\n nTail++;\n }\n}\n\nint main()\n{\n Setup();\n while (!gameOver)\n {\n Draw();\n Input();\n Logic();\n Sleep(10);\n }\n return 0;\n}\n\n该代码使用了Windows控制台的函数和库,可以在Windows环境下运行。运行代码后,使用wasd键控制蛇的移动方向,吃掉水果可以增加分数,当蛇头碰到墙壁或自己的身体时游戏结束。"}
原文地址: https://www.cveoy.top/t/topic/pBcV 著作权归作者所有。请勿转载和采集!