C语言实验:2048游戏

这篇博客面向C语言初学者,介绍了如何在控制台实现2048游戏。作者通过详细步骤讲解了游戏的逻辑,包括数组构建、数字移动、随机生成、键盘控制和游戏结束条件等关键部分,提供了完整的源代码供读者参考学习。
摘要由CSDN通过智能技术生成

C语言实验:2048游戏

该项目可以实验在控制台上借助键盘玩2048小游戏。
面向c语言初学者,大神轻喷hhh

项目效果:

开始游戏(每次2生成的位置都不同)
开始游戏
游戏结束
游戏结束

项目思路:

本人认为,是想这个项目的难点主要是数字的移动和数字2的随机生成。所以我有以下的思路:

  1. 借助二维数组构建表格。
  2. 注意备份每次执行后的数组,并且及时比对,因为2048游戏中如果数字位置没有改变不能生成新的2。
  3. 注意改变每次游戏的随机数种子,使游戏可玩性上升。我引入<time.h>读取机器的时间改变种子。
  4. 键盘输入时用getch()读值,读到的字符数据不会显示,影响游戏。
  5. 键盘操作使用switch语句控制,注意数字改变时要有顺序(个人认为和线性代数求行列式消去时按顺序消去道理一样hhhhh)
  6. 当数字周围没有相同值而且表格写满时,结束游戏。

下面介绍我用到的代码段:

程序设计基本思路如下:
初始化—>生成2—>备份数组—>读取键盘值并执行相关代码—>比对数组—>生成2—>清屏and输出—>判断游戏是否结束
并执行这样的循环,直到玩家按q退出或是游戏结束。
所以我先分块声明定义了以下函数:
一、数组和程序的初始化

void setUp(){
	int i,j;
	for(i=0;i<4;i++){
		for(j=0;j<4;j++){
			a1[i][j]=0;
		}
	}
	srand(time(NULL));//设置随机种子
}

先给二维数组a1赋值为0,并借助srand(time(NULL))随机选取种子,保证游戏的可玩性。
二、备份数组

void copyData(){
	int i,j;
	for(i=0;i<4;i++){
		for(j=0;j<4;j++){
			a2[i][j]=a1[i][j];
		}
	}
}

和比对函数搭配使用。如果接收键盘值后,数组没有发生改变,说明是无效操作。不能生成数字2.
三、比对数组

int compareData(){
	int i,j,flag=0;
	for(i=0;i<4;i++){
		for(j=0;j<4;j++){
			if(a2[i][j]!=a1[i][j])
				flag=1;
		}
	}
	return flag;
}

通过返回标准值判断数组是否有改变,如果flag值为1证明是有效操作,执行生成2的语句。
四、计算空白格数

int numVoid(){
	int i,j,n=0;
	for(i=0;i<4;i++){
		for(j=0;j<4;j++){
			if(a1[i][j]==0)
				n++;
		}
	}
	return n;
}

循环语句统计数组中0的个数。
五、生成数字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值