这篇文章介绍的是游戏失败界面的编写,为了使游戏更为人性化,有必要编写一个清晰的失败界面,这里我们先用代码勾勒框架。
/*
失败界面
*/
void Lostdraw()
{
system("cls");
int i;
gotoxy(45,1);
color(6);
printf(" |-----| "); //匹诺曹的帽子
gotoxy(45,2);
color(6);
printf(" | | ");
gotoxy(43,3);
color(6);
printf("-------------");
gotoxy(44,4);
color(14);
printf("(");
gotoxy(47,4);
color(15);
printf(" > <"); //眼睛
gotoxy(54,4);
color(14);
printf(")");
gotoxy(17,5);
color(11);
printf("+------------------------"); //上边框
gotoxy(35,5);
color(14);
printf("oOOo");
gotoxy(39,5);
color(11);
printf("----------"); //上边框
gotoxy(48,5);
color(14);
printf("| |"); //鼻子
gotoxy(48,6);
color(14);
printf("|_|");
gotoxy(51,5);
color(11);
printf("----------"); //上边框
gotoxy(61,5);
color(14);
printf("oOOo");
gotoxy(65,5);
color(11);
printf("-----------------+"); //上边框
for(i = 6;i<=19;i++) //竖边框
{
gotoxy(17,i);
printf("|");
gotoxy(82,i);
printf("|");
}
gotoxy(17,20);
printf("+------------------------------------------"); //下边框
gotoxy(60,20);
color(11);
printf("----------------------+"); //下边框
}
然后往里面写入内容,我们已经从之前的代码中判断出游戏失败的情况并且将其赋值给了endgamestatus变量,现在要做的就取出该变量并判断输出内容。
/*
结束游戏
*/
void endgame()
{
system("cls");
if(endgamestatus==1)
{
Lostdraw();
gotoxy(35,9);
color(7);
printf("对不起,您撞到墙了。游戏结束!");
}
else if(endgamestatus==2)
{
Lostdraw();
gotoxy(35,9);
color(7);
printf("对不起,您咬到自己了。游戏结束!");
}
else if(endgamestatus==3)
{
Lostdraw();
gotoxy(40,9);
color(7);
printf("您已经结束了游戏。");
}
gotoxy(43,12);
color(14);
printf("您的得分是 %d",score);
if(score >= HighScore)
{
color(10);
gotoxy(33,16);
printf("创纪录啦!最高分被你刷新啦,真棒!!!");
File_in(); //把最高分写进文件
}
else
{
color(10);
gotoxy(33,16);
printf("继续努力吧~ 你离最高分还差:%d",HighScore-score);
}
choose();
}
在输出失败信息后,我们应该给用户选择继续游戏还是退出。
/*
边框下面的分支选项
*/
void choose()
{
int n;
gotoxy(30,23);
color(12);
printf("重玩一局 [1]");
gotoxy(55,23);
printf("溜了溜了 [2]");
gotoxy(45,25);
color(11);
printf("选择:");
scanf("%d", &n);
switch (n)
{
case 1:
system("cls"); //清屏
score=0; //分数归零
sleeptime=200; //设定初始速度
add = 10; //使add设定为初值,吃一个食物得分10,然后累加
printsnake(); //返回欢迎界面
welcometogame();
break;
case 2:
exit(0); //退出游戏
break;
default:
gotoxy(35,27);
color(12);
printf("※※您的输入有误,请重新输入※※");
system("pause >nul");
endgame();
choose();
break;
}
}
以及用于从文件读取和写入最高分的函数。
/*
在文件中读取最高分
*/
void File_out()
{
FILE *fp;
fp = fopen("save.txt", "a+"); //打开文件save.txt
fscanf(fp, "%d", &HighScore); //把文件中的最高分读出来
fclose(fp); //关闭文件
}
/*
储存最高分进文件
*/
void File_in()
{
FILE *fp;
fp = fopen("save.txt", "w+"); //以读写的方式建立一个名为save.txt的文件
fprintf(fp, "%d", score); //把分数写进文件中
fclose(fp); //关闭文件
}
最后,在主函数中添加函数入口。
/*
主函数
*/
int main(int argc, char* argv[])
{
system("mode con cols=110 lines=30"); //设置控制台宽高
printsnake(); //绘制字符蛇
welcometogame(); //欢迎界面
//File_out(); //读取文件信息
//keyboardControl(); //控制键盘按钮
endgame(); //游戏结束
return 0;
}
至此,贪吃蛇的全部代码已经编写完成。