#include \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 eDirection { STOP = 0, LEFT, RIGHT, UP, DOWN }; \neDirection 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 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 default: \n break; \n } \n if (x >= width) \n x = 0; \n else if (x < 0) \n x = width - 1; \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}


原文地址: https://www.cveoy.top/t/topic/pH4m 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录