栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言 2048 增加一些功能

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言 2048 增加一些功能

2048

C语言 2048(每步细致讲解)


2048
  • 2048
  • 前言
  • 存取功能
    • 存入得分
    • 读取得分
  • 选择界面
    • 介绍界面
  • 字体颜色


前言
  • 接着之前写的2048基础上进行增加和优化。
  • 增加了5个函数。
  1. 增加存储的得分功能和读取得分功能,
  2. 改变字体颜色,
  3. 窗口界面之间跳转功能
  4. 增加窗口选择界面功能
  5. 增加游戏介绍界面功能

存取功能 存入得分
void Save(){
	FILE *f;//指向文件的指针
	f=fopen("HScore.txt","w");//打开HScore文件,若没有会自动创建
	fprintf(f, "%d",score);//把得分存入
	fclose(f);//关闭文件
}
  • 调用Save()函数放在over()函数后面,每次游戏结束后就会把这次得分存入
  • 若重新开一把游戏会覆盖之前的得分记录。
读取得分
int load(){
	int s;
	FILE *f;
	f=fopen("HScore.txt","r");
	fscanf(f,"%d",&s);//将分数存入s
	fclose(f);
	return s;
}
  • load()函数要在main()函数里最开始(游戏开始前)调用,
  • 当然higher是全局变量

higher=load();

  • 把得分数赋给一个值,稍后用到,
选择界面
  • 之前时运行直接开始游戏,现在可以在游戏开始前进行一些选择和设置
void chosemenu(){
	system("CLS");
	int num;
	printf("               1.开始游戏n");
	printf("               2.继续游戏n");
	printf("               3.游戏玩法n");
	printf("               4.上次得分:%dn",higher);//打印出刚才读取的分数
	printf("               5.音乐设置n");
	printf("               6.退出n");
	num=getch();
	switch(num){
		case '1':
				start();
				break;
		case '2':
				tip();
				break;
		case '3':
				gameintro();
				break;
		case '5':
				tip();
				break;
		case '6':
				exit(0);

	}
}
  • 调用chosemenu()就可以代替之前的start()位置,并把调用start()放在选择界面函数里,(这里要注意定义start()函数要放在chosemenu()之前)
  • 刚才读取的得分在这里打印出来
介绍界面
void gameintro(){
	int num;
	sleep(1);//延迟
	system("CLS");
	printf("游戏介绍n");
	printf("1、手指向一个方向滑动,所有格子会向那个方向运动。n");
	printf("2、相同数字的两个格子,相撞时数字会相加。n");
	printf("3、每次滑动时,空白处会随机刷新出一个数字的格子。n");
	printf("4、当界面不可运动时(当界面全部被数字填满时),游戏结束;当界面中最大数字是2048时,游戏胜利。n");
	printf("enter q returnn");
	num=getch();
	while(num!='q'){
		printf("未开发n");
		gameintro();
	}
	chosemenu();
}
  • 在刚才的选择界面中,按’3’跳转到游戏介绍界面,
  • sleep(1);函数是延迟执一点时间执行后面的代码,有一个缓冲时间,
  • 选择界面其他的一些功能还没有实验,先写出来,以后有时间实现,写一个tip函数
void tip(){
	int num;
	sleep(1);
	system("CLS");
	printf("未开发n");
	printf("enter q returnn");
	num=getch();
	while(num!='q'){
		printf("未开发n");
		tip();
	}
	chosemenu();
}
字体颜色
  • 颜色函数
颜色函数SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),前景色 | 背景色 | 前景加强 | 背景加强);
  • 颜色函数要放在你要打印的字体之前,那么颜色函数之后的所有要打印的字体都换变成一个颜色
  • 要想每次打印的颜色不一样,那么就在要打印之前都加上颜色函数,并修改值
  • 所以,刚才的选择界面修改如下
void chosemenu(){
	system("CLS");
	int num;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),4);
	printf("               1.开始游戏n");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5);
	printf("               2.继续游戏n");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),3);
	printf("               3.游戏玩法n");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),2);
	printf("               4.上次得分:%dn",higher);
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),1);
	printf("               5.音乐设置n");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),6);
	printf("               6.退出n");
	num=getch();
	switch(num){
		case '1':
				start();
				break;
		case '2':
				tip();
				break;
		case '3':
				gameintro();
				break;
		case '5':
				tip();
				break;
		case '6':
				exit(0);

	}
}
  • 修改颜色后面的值,颜色也不一样,并且值也有限制,感兴趣的可以取搜索学习一下

  • 最后附上运行结果截图



  • 之后可能实现
  • 存取最高分,不会覆盖之前存入的分数,
  • 保存游戏,重新运行可以接着上次保存的继续
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/916963.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号