C语言实现贪吃蛇游戏演示

这篇文章主要为大家详细介绍了C语言实现贪吃蛇游戏演示,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C语言实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下

IDE用的是 VS2019

先看效果

 

代码全览

game.h

 #pragma once #define  _CRT_SECURE_NO_WARNINGS 1 #include  #include  #include  #include  #define PLATFORM 1 //运行的系统 1为win 0为linux #define MAPWIDTH 15 //地图宽度,包括墙 #define MAPHEIGHT 15  //地图高度,包括墙 #define SNAKELENGTH (MAPHEIGHT - 2) * (MAPWIDTH - 2) //结构体声明 struct Body { int isExist; int x; int y; }; struct Food { int x; int y; }; void game(); void initWall(char wall[MAPHEIGHT][MAPWIDTH], int mapWidth, int mapHeight); void displayMap(int mapWidth, int mapHeight, struct Body snake[], int snakelength, struct Food food); void clearScreen(); void inputProcess(char* pinput); void initSnake(struct Body snake[SNAKELENGTH], int length); void generateFood(struct Food* food, struct Body snake[]); int isWall(int x, int y); int isSnake(int x, int y, struct Body snake[], int lengh); void control(char input, struct Body snake[]); void generateFood(struct Food* food, struct Body snake[]); int isFood(int x, int y, struct Food* food); int isEat(struct Body snake[], struct Food* pfood); void bodyMove(struct Body snake[], int* bodyLength); int isInBody(struct Body snake[], int lengh);

GameStart.c

 #include "game.h" void displayMenu() { printf("########################\n"); printf("###### 贪吃蛇游戏 #######\n"); printf("########################\n"); printf("------------------------\n"); printf("       1.开始游戏        \n"); printf("       0.退出游戏        \n"); printf("------------------------\n"); printf("请输入选项:>"); char ch; scanf("%c", &ch); getchar(); switch (ch) { case '1': { game(); break; } case '0': { exit(0); break; } default: printf("输入错误,请重新输入:>"); break; } } int main(void) { while (1) { clearScreen(); displayMenu(); clearScreen(); } return 0; }

game.c

 #define  _CRT_SECURE_NO_WARNINGS 1 #include "game.h" //游戏逻辑 void game() { //分数 int score = 0; //游戏状态 0为胜利 1为咬到蛇身 2为撞到墙上 int gameState = 0; //输入状态 char input = 0; //墙 char wall[MAPHEIGHT][MAPWIDTH]; //创建蛇结构体数组 struct Body snake[SNAKELENGTH]; //创建食物结构体 struct Food food = { 5,5 }; //初始化蛇 initSnake(snake, SNAKELENGTH); //初始化墙 initWall(wall, MAPWIDTH, MAPHEIGHT); //生成食物 generateFood(&food, snake); while (1) { //清屏 clearScreen(); control(input, snake); //显示地图 displayMap(MAPWIDTH, MAPHEIGHT, snake, SNAKELENGTH, food); printf("得分:%d\n", score); //printf("food:%d %d\n", food.x, food.y); //printf("snake:%d %d", snake[0].x, snake[0].y); //处理输入 inputProcess(&input); //撞到蛇身,游戏失败 if (isInBody(snake, SNAKELENGTH)) { gameState = 1; break; } //撞到墙上,游戏失败 if (isWall(snake[0].x, snake[0].y)) { gameState = 2; break; } //吃到食物加分,蛇身加一 if (isEat(snake, &food)) { score++; snake[score].isExist = 1; snake[score].x = snake[score - 1].x; snake[score].y = snake[score - 1].y; if (score == SNAKELENGTH - 1) { //游戏胜利 gameState = 0; break; } generateFood(&food, snake); } //蛇身移动 bodyMove(snake, &score); } //胜负显示 switch (gameState) { case 1: { printf("咬到蛇身,游戏结束!\n"); break; } case 2: { printf("撞到墙上,游戏结束!\n"); break; } case 0: { printf("游戏胜利!\n"); break; } default: break; } printf("按回车键退出"); getchar(); } //清除屏幕 void clearScreen() { if (PLATFORM) { system("cls"); } else { system("clear"); } printf("\033c"); } //输入处理 void inputProcess(char* pinput) { int t = (int)time(NULL); while (1) { if (_kbhit()) { switch (getch()) { case 'w': { if (*pinput != 's') { *pinput = 'w'; } break; } case 's': { if (*pinput != 'w') { *pinput = 's'; } break; } case 'a': { if (*pinput != 'd') { *pinput = 'a'; } break; } case 'd': { if (*pinput != 'a') { *pinput = 'd'; } break; } /* case ' ': { *pinput = ' '; break; }*/ default: break; } } if ((int)time(NULL) - t == 1) { //printf("%c\n", *pinput); //一秒一帧 break; } /*if (*pinput == ' ') { continue; }*/ } } //初始化墙 //'#'墙 //' '空 void initWall(char wall[MAPHEIGHT][MAPWIDTH], int mapWidth, int mapHeight) { for (int i = 0; i = MAPHEIGHT || x <= 1 || x >= MAPWIDTH) { return 1; } return 0; } //判断是否是蛇 int isSnake(int x, int y, struct Body snake[], int lengh) { for (int i = 0; i = 1; i--) { snake[i].x = snake[i - 1].x; snake[i].y = snake[i - 1].y; } } }

相关思路有空再写。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持0133技术站。

以上就是C语言实现贪吃蛇游戏演示的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » C语言