c语言贪吃蛇详解5.GameOver功能与显示成绩
以前我们已经做出来了一个能吃东西变长的蛇。不过它好像不会死。。。
现在就来实现一下game over的功能吧。
写个函数判断蛇是否撞到自己或者撞到墙:
bool gameOver(){ bool isGameOver=false; int sX=s[0][0],sY=s[0][1]; //蛇头的x坐标和y坐标 if(sX==0||sX==H-1||sY==0||sY==W-1) isGameOver=true; for(int i=1; i
然后在main里面加这个实现gameOver
if(gameOver()) { system("cls"); //清除屏幕内容 printf("Game Over\n"); system("pause"); break; }
看看效果
到现在为止的代码:
#include#include #include #include #include #define H 23#define W 75#define WAIT_TIME 500//定义direction的每个值代表的方向#define UP 0#define DOWN 1#define LEFT 2#define RIGHT 3int a[H][W]; //地图数组int s[H*W][2]; //蛇身坐标数组int sLength; //蛇的长度int direction; //蛇的方向bool eated=false; //标记是否吃到食物void init() //程序开始时的初始化操作{ srand((unsigned)time(NULL)); //设置随机数种子为现在的时间 CONSOLE_CURSOR_INFO cursor_info = { 1, 0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); //隐藏关标 int i,j; for(i=0; i 0; i--) //从尾巴开始,每一个点的位置等于它前面一个点的位置 { s[i][0]=s[i-1][0]; s[i][1]=s[i-1][1]; } switch(direction) { case UP: s[0][0]--; break; case DOWN: s[0][0]++; break; case LEFT: s[0][1]--; break; case RIGHT: s[0][1]++; break; }}void drawSnake() //画蛇{ int i; for(i=0; i
接下来,我们来显示一下成绩。
声明一个变量来记录分数
int score=0; //得分
然后当吃到食物时分数增加(main里面)
if(a[s[0][0]][s[0][1]]==-1) //如果蛇头碰到食物,就重新投放食物,并且把食物点重置为0 { eated=true; //标记已经吃到食物 score+=10; food(); a[s[0][0]][s[0][1]]=0; //去掉食物 }
然后写一个printScore函数来写分数
void printScore(){ gotoxy(0,W+2); printf(" 贪吃蛇小游戏"); gotoxy(1,W+2); printf(" 环家伟制作"); gotoxy(4,W+2); printf(" 得分:%d",score);}
记得在main里面调用啊。看看效果:
完整代码:
#include#include #include #include #include #define H 23#define W 75#define WAIT_TIME 500//定义direction的每个值代表的方向#define UP 0#define DOWN 1#define LEFT 2#define RIGHT 3int a[H][W]; //地图数组int s[H*W][2]; //蛇身坐标数组int sLength; //蛇的长度int direction; //蛇的方向bool eated=false; //标记是否吃到食物int score=0; //得分void init() //程序开始时的初始化操作{ srand((unsigned)time(NULL)); //设置随机数种子为现在的时间 CONSOLE_CURSOR_INFO cursor_info = { 1, 0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); //隐藏关标 int i,j; for(i=0; i 0; i--) //从尾巴开始,每一个点的位置等于它前面一个点的位置 { s[i][0]=s[i-1][0]; s[i][1]=s[i-1][1]; } switch(direction) { case UP: s[0][0]--; break; case DOWN: s[0][0]++; break; case LEFT: s[0][1]--; break; case RIGHT: s[0][1]++; break; }}void drawSnake() //画蛇{ int i; for(i=0; i
更多精彩: