马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 MC.Steve 于 2026-2-10 14:54 编辑
今天的主题是:贪吃蛇!(加强版明天发布)(不定期会出python的游戏)
贪吃蛇的程序语言:C语言、C++
保证鱼油能够在C语言、C++中玩到贪吃蛇
C语言:
- #include <stdio.h>
- #include <conio.h>
- #include <windows.h>
- #include <stdlib.h>
- #define WIDTH 20
- #define HEIGHT 15
- int x, y, fruitX, fruitY, score;
- int tailX[100], tailY[100];
- int nTail;
- enum eDirection { STOP, LEFT, RIGHT, UP, DOWN };
- enum eDirection dir;
- void Setup() {
- dir = STOP;
- x = WIDTH / 2;
- y = HEIGHT / 2;
- fruitX = rand() % WIDTH;
- fruitY = rand() % HEIGHT;
- score = 0;
- nTail = 0;
- }
- void Draw() {
- system("cls");
- for (int i = 0; i < WIDTH + 2; i++) printf("#");
- printf("\n");
- for (int i = 0; i < HEIGHT; i++) {
- for (int j = 0; j < WIDTH; j++) {
- if (j == 0) printf("#");
- if (i == y && j == x) printf("O");
- else if (i == fruitY && j == fruitX) printf("F");
- else {
- int print = 0;
- for (int k = 0; k < nTail; k++) {
- if (tailX[k] == j && tailY[k] == i) {
- printf("o");
- print = 1;
- }
- }
- if (!print) printf(" ");
- }
- if (j == WIDTH - 1) printf("#");
- }
- printf("\n");
- }
- for (int i = 0; i < WIDTH + 2; i++) printf("#");
- printf("\nScore:%d", score);
- }
- void Input() {
- if (_kbhit()) {
- switch (_getch()) {
- case 'a': dir = LEFT; break;
- case 'd': dir = RIGHT; break;
- case 'w': dir = UP; break;
- case 's': dir = DOWN; break;
- case 'x': dir = STOP; break;
- }
- }
- }
- void Logic() {
- int prevX = tailX[0];
- int prevY = tailY[0];
- int prev2X, prev2Y;
- tailX[0] = x;
- tailY[0] = y;
- for (int i = 1; i < nTail; i++) {
- prev2X = tailX[i];
- prev2Y = tailY[i];
- tailX[i] = prevX;
- tailY[i] = prevY;
- prevX = prev2X;
- prevY = prev2Y;
- }
- switch (dir) {
- case LEFT: x--; break;
- case RIGHT: x++; break;
- case UP: y--; break;
- case DOWN: y++; break;
- }
- if (x >= WIDTH) x = 0; else if (x < 0) x = WIDTH - 1;
- if (y >= HEIGHT) y = 0; else if (y < 0) y = HEIGHT - 1;
- for (int i = 0; i < nTail; i++)
- if (tailX[i] == x && tailY[i] == y)
- dir = STOP;
- if (x == fruitX && y == fruitY) {
- score += 10;
- nTail++;
- fruitX = rand() % WIDTH;
- fruitY = rand() % HEIGHT;
- }
- }
- int main() {
- Setup();
- while (dir != STOP) {
- Draw();
- Input();
- Logic();
- Sleep(100); // 控制速度
- }
- return 0;
- }
复制代码
C++:
游客,本帖隐藏的内容需要积分高于 20 才可浏览,您当前积分为 0 |