#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 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 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 for (int j = 0; j < width; j++) { \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 bool printTail = false; \n for (int k = 0; k < nTail; k++) { \n if (tailX[k] == j && tailY[k] == i) { \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 if (_kbhit()) { \n switch (_getch()) { \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 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 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 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 if (tailX[i] == x && tailY[i] == y) { \n gameOver = true; \n break; \n } \n } \n\n if (x == fruitX && y == fruitY) { \n score += 10; \n fruitX = rand() % width; \n fruitY = rand() % height; \n nTail++; \n } \n} \n\nint main() { \n Setup(); \n while (!gameOver) { \n Draw(); \n Input(); \n Logic(); \n Sleep(10); \n } \n return 0; \n} \n\n这是一个简单的控制台版本的魂斗罗小游戏,使用wasd来控制角色移动,x键退出游戏。你可以根据自己的需求进行修改和扩展。请注意,这只是一个简单的示例,可能还有一些功能和特性尚未实现。


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

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