【C语言】贪吃蛇游戏的实现(四)

这篇文章介绍的是游戏失败界面的编写,为了使游戏更为人性化,有必要编写一个清晰的失败界面,这里我们先用代码勾勒框架。

/*
	失败界面
*/
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;
}

至此,贪吃蛇的全部代码已经编写完成。

评论 99
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值