c语言2048代码linux,【源代码分享】2048游戏C语言代码实现

本文详细介绍了2048游戏的源代码,包括主菜单显示、游戏流程控制(如start(), show(), key()等)、方块操作(leftmove(), rightmove()等)、胜利和失败条件判断(win(), lose()等),以及关键函数的功能和调用逻辑。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

#include

#include

#define WINVALUE 1024//定义宏常量,用于控制游戏胜利的条件,可以自行修改。

/*

"2048"游戏自写源代码

游戏名称:2048

游戏界面:

主菜单

游戏界面

游戏规则:

运行游戏程序,会出现主菜单,显示了游戏名称以及一些其他的信息。

根据下面提示:

按‘Y’或‘y’开始游戏,此时主菜单被游戏界面代替。

按‘N’或‘n’退出游戏,此时游戏程序结束。

【重要】:首先必须了解本游戏总共有三种状态

1.可继续的状态

2.失败的状态

3.胜利的状态

游戏界面:

第一行显示游戏的局数

中间是4X4的方块

下方是score(成绩)、step(步数)、maxnumber(此时16个方块中最大的数字)

游戏操作:

‘a’:将所有的方块左移

‘w’:将所有的方块上移

‘d’:将所有的方块右移

‘s’:将所有的方块下移

判断胜利:

当maxnumber的值,也就是16个方块中最大的数达到2048时,游戏胜利。

判断失败:

当16个格子被填满,并且每个格子中的数字和它周围的格子中的数字不相等,

也就是不能再消去的时候,判定游戏失败。

自定义函数列表:

1.int showmain();

函数功能:

显示主菜单

返回值:

1,表示用户输入y或者Y,即为用户确定要进行游戏。此时调用show()函数,显示游戏界面

0,表示用户输入n或者N,即为用户取消了进入游戏的操作,直接调用exit(0)函数结束游戏程序

备注:

每当游戏程序运行调用此函数,只显示一次。

2.void clean();

函数功能:

清屏

触发条件:

1,从主菜单切换到游戏界面,需要清除主菜单在屏幕上打印的菜单信息

2,游戏开始以后,每次按动方向键,每个格子的数据都会更新,此函数用于清除上次残留在屏幕的信息

3,当游戏胜利或者结束,当用户表示自己需要重新玩一遍的时候,清空屏幕

3.void start();

函数功能:

初始化所有的方块的值为0

初始化step的值为0

初始化score的值为0

初始化max的值为0

备注:当游戏重新开始,必须调用此函数

4.void show();

函数功能:

显示游戏界面

备注:

配合clean()函数一起使用,在游戏开始后,只要游戏没有结束,每调用一次清屏函数,

然后就调用此函数进行数据的显示,两者配合从而实现更新屏幕显示的效果

5.int key();

函数功能:

监听用户按下的是哪个方向键,从而根据不同的按键对16个数据进行操作

6.void leftjudge();

函数功能:

当左键被按下,判断4X4的格子中是否有相邻的格子中的数据相等,如果某两个左右相邻的格子中的数据相等

则将左方的数据翻倍,右方的数据初始化为0

备注:

此函数只是将相邻的并且相等的数据进行了一定方向的合并,并没有按照此方向进行数据的位置移动

因此必须在之后紧接着调用leftmove函数

//按键为'a',即为左,此函数利用两层循环语句判断“横向”是否有相邻的相等方格,

//如果有则把右侧的数值在左侧的上进行叠加,

//并将右侧的数字初始化为0

7.void leftmove();

函数功能:

由于前一步调用了leftjudge函数,4X4方格中已经完成了合并相等的数据的操作,只需要进行方块数据的移动即可。

将数据移动至按键方向。

备注:

leftjudge()函数的后继函数,必须在leftjudge函数之后紧接着执行

8.void rightjudge();

原理类似leftjudge();

9.void rightmove();

原理类似leftmove();

10.void upjudge();

原理类似leftjudge();

11.void upmove();

原理类似leftmove();

12.void downjudge();

原理类似leftjudge();

13.void downmove();

原理类似leftmove();

14.void produce();

函数功能:

判断所有的方块中的数据,找出为零的所有方块,并随机选择某一个值为0的方块,将这个方块的值随机赋为2或者4;

15.int lose();

函数功能:

判断游戏是否结束

返回值:

0,游戏继续

1,游戏结束

备注:

判断游戏是否结束的依据为:

所有方块都不为空(full() == 0);

并且 16个方块中没有可以结合的方块组

16.int full();

函数功能:

判断4X4的方格中有没有空的方格

返回值:

1,说明方格已满

0;说明未满

17. int combine();

函数功能:

判断是否具有可以合并的方块

返回值:

1,说明存在可以结合的相邻方块组

0;说明不存在

18.int win();

函数功能:

判断游戏是否胜利(通过判断16个方块中最大的数字和胜利条件是否相等,(胜利条件由宏常量WINVALUE决定))

返回值:

0,游戏继续

1,游戏胜利

19. void big();

函数功能:

找出16个格子中的最大值

并将值赋给全局变量max

*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值