用c语言基于Console实现2048游戏

用c语言基于Console实现2048游戏

项目描述

《2048》是一款非常经典的数字益智游戏,而《2048》的初始数字则是由2+2组成的基数4。在操作方面的不同为一步一格的移动,变成更为爽快的一次到底。相同数字的方块在靠拢、相撞时会相加。系统给予的数字方块不是2就是4,玩家要想办法在这小小的16格范围中凑出“2048”这个数字方块。


项目实现效果

1.初始状态在随机的空白处随机产生一个数

2.先上移动且合并

3.先下移动且合并

4.先左向右合并及移动 同理

Tips

  • 无需回车,直接输入w-s-a-d代表上-下-左-右即可。
  • ESC退出游戏。

项目实现库及方法

1.方块及轮廓的显现

  • 首先是whie(1)产生的循环,该循环退出的条件就是游戏胜利或失败。也会创建一个二维数组模拟4 * 4 的平台。并通过控制printf的格式控制打印出的形式。
  • 其次注意每次再输完一个字母后会进行清屏操作保证以前的干扰信息不复存在。
  • 再进行输入字母时,会进行一次判断,判断是否为既不移动也不合并,当答案为是时,会再次进行判断游戏失败或胜利否则光标不停地闪烁说明当前移动是无效的,等待下一次有效字符的输入。

2.随机数的产生

  • 通过对<stdlib.h>及 <time.h> 标准库的引用,产生随机数2或4至二维数组的随机一个空白处。同时,又利用数组开辟了一块连续的空间,并通过控制数组中2和4元素的个数之比来控制随机数产生的概率,使得基数2产生的概率较大。 用c语言产生随机数的方法

3.移动及合并的实现

  • 主要利用数组遍历时所选取的方向不同实现元素的移动及合并。
  • 移动先找到对应列或者行的第一个空白元素,然后进行元素的交换。
  • 合并会在移动之后才进行,对应列或者行的上一个或者下一个是否与其相同,相同则进行合并,并在其中一个位置赋为0.
  • 一次合并结束后会再次进行移动,避免产生新的空位。

4.游戏胜利及失败的判断

  • 失败—当4 * 4的二维数组没有空白位置时结束程序。游戏失败判定要注意在占满数组的情况下需要进一步判断是否可以合并
  • 胜利—当16个位置中产生了一个2048时即成功,退出程序。

项目注意事项

  • goto 标号; 可以和if一起使用构成循环。
  • 再进行输入字母时,要进行一次判断,判断是否为既不移动也不合并,当答案为是时,会再次进行判断游戏失败或胜利否则光标不停地闪烁说明当前移动是无效的,等待下一次有效字符的输入。
  • 随机数的产生要注意随机的空白处,产生2或者4,不能把已有数据给覆盖。
  • 移动时注意遍历方向的选取,如果不合适则会让某一个元素跳过之间的一个直接到达边界处。
  • 一次合并结束后会再次进行移动,避免产生新的空位。
  • 游戏失败判定要注意在占满数组的情况下需要进一步判断是否可以合并

项目优化

  • 项目可以添加积分制。
  • 项目可以选择两种模式4 * 4或者5 * 5
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值