图片 3

好玩的2048编程小游戏,C语言写的代码分享给你了!

Posted by

学习C/C++一个多月了,我们已经学习了c语言数据的基本类型、变量的输入输出、进制转换、运算符和分支结构、循环结构、数组、指针、函数和字符串结构体等等,在老师带着我们作出了一个贪吃蛇的过程中让我深刻的体会到了字符界面做游戏的快感,原来c语言如此强大,利用所学的基础居然可以实现这样精巧的功能。然后老师又介绍了一个2048的游戏,说这个游戏的实现比较有挑战,本来就对c语言憧憬的我对2048这个游戏充满了好奇,然后自己下载了一个2048的游戏玩了一下就开始实现自己的代码了,挑战了一下自己。

学习C语言/C++已经接近一个月了,在老师的带领下,我们已经学习了c语言数据的基本类型、变量的输入输出、进制转换、运算符和分支结构、循环结构、数组、指针、函数和字符串结构体等等,在老师带着我们作出了一个贪吃蛇的过程中让我深刻的体会到了字符界面做游戏的快感,原来c语言如此强大,利用所学的基础居然可以实现这样精巧的功能。然后老师又介绍了一个2048的游戏,说这个游戏的实现比较有挑战,本来就对c语言憧憬的我对2048这个游戏充满了好奇,然后自己下载了一个2048的游戏玩了一下就开始实现自己的代码了,挑战了一下自己。

图片 1

图片 2图片 3

下面我会把实现这个游戏的思路以及相应的解决办法进行了总结,并提供自己的代码和详细注释。

下面我会把实现这个游戏的思路以及相应的解决办法进行了总结,并提供自己的代码和详细注释。

1.设计目标

1.设计目标

界面显示

界面显示

////////////////

////////////////

/ 2 2 2 8/

/ 2 2 2 8/

/ /

/ /

/ 2 /

/ 2 /

/ /

/ /

/////////////////

/////////////////

游戏操作

游戏操作

r —> 开始游戏

r —> 开始游戏

q —> 结束游戏

q —> 结束游戏

2 —-> 下移

2 —-> 下移

4 —-> 左移

4 —-> 左移

6 —-> 右移

6 —-> 右移

8 —-> 上移

8 —-> 上移

任意键 -> 重新开始

任意键 -> 重新开始

游戏规则

游戏规则

按r键开始游戏,然后进行游戏,可以输入任意方向键进行操作;进行相应的平移操作,当两个相同的数字”相撞”则将它们两个数字合成一个是它们和的数字,当两个数字不同”相撞”则不进行合成;当所有格子满了并且无法进行移动的时则判断为输,当数字有一个出现2048的字样则判断为赢。

按r键开始游戏,然后进行游戏,可以输入任意方向键进行操作;进行相应的平移操作,当两个相同的数字”相撞”则将它们两个数字合成一个是它们和的数字,当两个数字不同”相撞”则不进行合成;当所有格子满了并且无法进行移动的时则判断为输,当数字有一个出现2048的字样则判断为赢。

2.创新点

2.创新点

可以改变游戏的胜利值(2048可以修改为1024等等)

可以改变游戏的胜利值(2048可以修改为1024等等)

任何时刻都可以按住r重新开始游戏

任何时刻都可以按住r重新开始游戏

代码用一维数组代替二维数组,减少了遍历数组的时间复杂度

代码用一维数组代替二维数组,减少了遍历数组的时间复杂度

操作方向的时候不需要输入回车,使用户得到更舒适的体验

操作方向的时候不需要输入回车,使用户得到更舒适的体验

界面的刷新流畅

界面的刷新流畅

屏蔽其他按键

屏蔽其他按键

3.对未来的展望

3.对未来的展望

修改成为图形界面并增加一些动画特效

修改成为图形界面并增加一些动画特效

优化代码

优化代码

4.重难点剖析

4.重难点剖析

如何利用2 4 6 8进行方向控制?

如何利用2 4 6 8进行方向控制?

答:可以利用switch…case语句,当输入字符为2时调用下移函数,当输入字符为4时则调用左移函数等

答:可以利用switch…case语句,当输入字符为2时调用下移函数,当输入字符为4时则调用左移函数等

如何不输入回车就可以输入字符?

如何不输入回车就可以输入字符?

答:可以通过getch(),输入字符并且不用输入回车即可达到效果

答:可以通过getch(),输入字符并且不用输入回车即可达到效果

为什么地图数组用一维数组代替二维数组

为什么地图数组用一维数组代替二维数组

答:由于每一帧画面都会要遍历该数组,使用一维数组可以方便的用一个循环就可以遍历数组

答:由于每一帧画面都会要遍历该数组,使用一维数组可以方便的用一个循环就可以遍历数组

怎么判断输

怎么判断输

答:当数组中全部都被占用,并且每个数字的上下左右都没有与它相同的数字即为输

答:当数组中全部都被占用,并且每个数字的上下左右都没有与它相同的数字即为输

怎么判断赢

怎么判断赢

答:遍历数组出现2048即为赢

答:遍历数组出现2048即为赢

移动时内部数据怎么变化

移动时内部数据怎么变化

答:由于上下左右比较类似,我就以左移做详细介绍,其他的可以类推。

答:由于上下左右比较类似,我就以左移做详细介绍,其他的可以类推。

分析左移代码

分析左移代码

void MoveLeft()

void MoveLeft()

{

{

int i = 0;

int i = 0;

int tempmap[GAMERANGE ] = {0};

int tempmap[GAMERANGE ] = {0};

memcpy(tempmap,g_map,GAMERANGE *sizeof; //拷贝移动的之前的数组

memcpy(tempmap,g_map,GAMERANGE *sizeof; //拷贝移动的之前的数组

for (i; i < GAMERANGE ; ++i)

for (i; i < GAMERANGE ; ++i)

相关文章

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注