提示:这是我的一个课程设计 不是很完善 大家可以一起讨论一下


前言

2048是一款比较流行的数字游戏,最早于2014年3月20日发行。原版2048首先在GitHub上发布,原作者是Gabriele Cirulli,后被移植到各个平台。这款游戏是基于《1024》和《小3传奇》的玩法开发而成的新型数字游戏。


`提示:以下是本篇文章正文内容

1、2048游戏设计的内容

1-1 游戏规则

2048游戏共有16个格子,初始时初始数字由2或者4构成。
(1)向一个方向滑动,所有格子会向那个方向运动。
(2)相同数字的两个格子,相撞时数字会相加。
(3)每次滑动时,空白处会随机刷新出一个数字的格子。
(4)当界面不可运动时(当界面全部被数字填满时),游戏结束;当界面中最大数字是2048时,游戏胜利。

1-2 设计要求

(1)美观的界面;
(2)使用↑、↓、→、←四个方向键进行操作;
(3)具有开始游戏、结束游戏功能按钮等基础功能;
(4)游戏得分的正确记录;
(5)游戏失败和胜利的提示。
在这里插入图片描述

2、2048游戏的程序设计

根据2048的游戏规则,软件设计需要实现的基本功能有:随机生成2或 4,上移、下移、左移、右移,判断游戏失败与胜利,显示游戏得分,游戏失败和胜利的提示。

2-1 流程图

程序流程图:
在这里插入图片描述

VI层次结构图:
在这里插入图片描述

通过LabVIEW的VI层次结构图可以看出,2048游戏采用了一个子VI结构。生成 2或4、上移、下移、左移、右移、是否失败、胜利,通过主VI和子VI协同实现;在游戏运行过程中,当条件满足时,就会执行相应的程序。

2-2 前面板的设计

利用一个 4×4 的二维数组存储棋盘,为了美观和用户体验,只做了一个自定义控件,分别为空白、2、4、8、16、…、 8192 共 14个图片元素。
在这里插入图片描述
在前面板放置输入数组、分数显示框、重新开始按钮、结束按钮,并进行合理布局合理布局。
在这里插入图片描述

2-3 初始化程序设计

在程序运行开始时,需要对数组进行初始化,在初始化程序中,先生成一个4行4列的数组(数组元素均为0)。然后通过For循环生成一个一维数组(元素个数为4,且为0,1,2,3中的数)随机在n行n列(n=0,1,2,3,)的位置生成2^1=2,一共生成两个2。程序的初始化完成。
在这里插入图片描述

2-4 用户控制程序

用户控制部分使用一个事件结构来检测事件,事件分别为:超时、输入数组改变、方向键改变、键按下,可以处理游戏过程中用户可能的键盘操作。其中,键按下事件是在用户按下键盘上的↑、↓、→、←四个方向键时,通过扫描键盘上按键扫描代码,判断出键盘上按下的按键,分别转到对应的上移、下移、右移、左移状态。
在这里插入图片描述

2-5 移动程序和相同值累计程序设计(关键)

上移、下移、右移、左移四种移动状态是 2048 游戏中最主要、最频繁的操作。四个方向的移动程序都可以由左移程序来实现(数组反转即为右移程序,数组转置即为上移程序,数组反转、转置即为下移程序)。因此以左移程序和左移相同值累计程序来进行说明。
左移程序设计:用户按下键盘上的←方向键时,执行左移程序,左移程序每次扫描一行数组元素进行处理:若同行内存在相同元素,且元素间相邻或间隔元素为0时,将元素整体左移。(示例:若输入数组为[0 1 0 1],则经过左移程序的处理输出[1 1 0 0])并且将输入数组与输出数组进行比较,输出比较值。(用于判断是否失败)
在这里插入图片描述

当数组进行完左移处理后,需要进一步进行相邻相同元素的累计到左侧数组元素上。具体程序(见图8)实现流程如下:当两个相邻的元素输入时,第2个数会进入条件结构的“真”部分。实现两元素累计后的输出和得分计算的功能。
若某次动作为有效动作(指移动完成后,两相同元素相加的过程),其该动作的得分为2^(n+1)。(举例:输入数组为[1 1 0 0 ],则输出数组为[2 0 0 0],得分为2(n+1)=2(1+1)=4分)此外,该程序也会返回输入数组与输出数组的比较值。(用于判定是否失败)
在这里插入图片描述

2-6 随机数生成程序设计

当数组进行完移动程序和相同值累计程序后,要在空白位置生成一个“2”或“4”,用索引数组函数和替换数组子集实现。
在这里插入图片描述

2-7 失败/成功程序设计

本游戏设定当用户合成“2048”会提示“您已达成合成2048”的字样。实现过程:两层For循环的嵌套,使得数组元素遍历与11比较(此处的11指的是2^11=2048)当数组16个元素中出现2048提示成功,仍可继续进行游戏。(直至合成8192为止)
而对于失败的判定,关键在于移动程序和相同值累计程序反馈回来的比较信号,若这八个返回值全部为真,说明4×4的数组已经完全占满,已经没有动作的空间,此时利用条件结构弹出提示弹窗“Game Over!!!”。
在这里插入图片描述

2-8 声音控制程序设计

观察原版的2048游戏,当进行移动和合成的时候,会产生提示音。因此录制了游戏中的动作声音和合成声音。通过静音键和方向键的值的变化来共同控制声音的播放与否。
12138
在这里插入图片描述

总结

通过此次的设计,对课程的知识达到了复习的效果,本设计中出现了例如:数据类型,程序结构中的循环结构、事件结构、条件结构,对于音频文件的播放,数组函数的使用,对于子VI的应用等知识。同时也更加熟悉了前面板的美观设计。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐