C语言实现贪吃蛇代码怎么写

avatar
作者
猴君
阅读量:2

这是一个简单的C语言贪吃蛇游戏的代码示例:

#include <stdio.h> #include <conio.h> #include <windows.h>  #define WIDTH 20 #define HEIGHT 20  int snakeX[100], snakeY[100]; int snakeLength = 1; int fruitX, fruitY; int score = 0; int gameover = 0; char direction = 'r';  void setup() {     snakeX[0] = WIDTH / 2;     snakeY[0] = HEIGHT / 2;      fruitX = rand() % WIDTH;     fruitY = rand() % HEIGHT; }  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 == snakeY[0] && j == snakeX[0])                 printf("O");             else if (i == fruitY && j == fruitX)                 printf("F");             else {                 int printSnake = 0;                 for (int k = 1; k < snakeLength; k++) {                     if (i == snakeY[k] && j == snakeX[k]) {                         printf("o");                         printSnake = 1;                     }                 }                 if (!printSnake)                     printf(" ");             }              if (j == WIDTH - 1)                 printf("#");         }         printf("\n");     }      for (int i = 0; i < WIDTH + 2; i++)         printf("#");     printf("\n");      printf("Score: %d", score); }  void input() {     if (_kbhit()) {         switch (_getch()) {         case 'a':             direction = 'l';             break;         case 'd':             direction = 'r';             break;         case 'w':             direction = 'u';             break;         case 's':             direction = 'd';             break;         case 'x':             gameover = 1;             break;         }     } }  void logic() {     int prevX = snakeX[0];     int prevY = snakeY[0];     int prev2X, prev2Y;     snakeX[0] = snakeX[0] + 1;     snakeY[0] = snakeY[0] + 1;     for (int i = 1; i < snakeLength; i++) {         prev2X = snakeX[i];         prev2Y = snakeY[i];         snakeX[i] = prevX;         snakeY[i] = prevY;         prevX = prev2X;         prevY = prev2Y;     }      switch (direction) {     case 'l':         snakeX[0]--;         break;     case 'r':         snakeX[0]++;         break;     case 'u':         snakeY[0]--;         break;     case 'd':         snakeY[0]++;         break;     }      if (snakeX[0] == fruitX && snakeY[0] == fruitY) {         score += 10;         snakeLength++;         fruitX = rand() % WIDTH;         fruitY = rand() % HEIGHT;     }      if (snakeX[0] >= WIDTH || snakeX[0] < 0 || snakeY[0] >= HEIGHT || snakeY[0] < 0)         gameover = 1;      for (int i = 1; i < snakeLength; i++) {         if (snakeX[0] == snakeX[i] && snakeY[0] == snakeY[i])             gameover = 1;     } }  int main() {     setup();     while (!gameover) {         draw();         input();         logic();         Sleep(100);     }      return 0; } 

请注意,这只是一个简单版本的贪吃蛇游戏,可能还需要进一步优化和完善。您可以根据自己的需求进行修改和扩展。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!