设计过程
前面板布局
最近在学习Labview,突发奇想,试试写一个2048小游戏,做工粗糙,但能实现游戏目标。过程显示使用下拉图片的4*4二位数组实现,方向键使用自定义确定按钮,
图片设计
由于不想去画图片,数字显示是从网上截的,箭头没有找到合适的,自己使用电脑自带的画图软件画的。
自定义控件创建过程:
放置一个控件→制作自定义类型→打开自定义类型→右击控件→从剪贴板导入→选择真假导入
图片下拉列表导入选择在前面/后面导入为将剪贴板的图片插入至当前图画的前面/后面,而剪切板导入会更新你当前选择的图片。
初始化
游戏初始化时会在游戏界面中创建两个1,即图标显示为二的图片,使用两个0~3的随机整数得到横纵坐标,为防止两个随机坐标一致,在第二个坐标后添加判断依据,如果出现重复,执行while循环再获取一次坐标,直到第一和第二坐标不一致跳出循环,得到初始化的图形。
移动实现
数字的移动和合并是整个游戏最难的地方,我思考半小时确定了一个大致的方向:将4*4二维数组分列计算,共计算4次,以上移为例,第一行数组进入移动VI,先将数组中的0删除,得到非0数组,进入合并VI,合并VI中,会依次检查0和1,1和2,2和3三队数据,如果0和1数据相同,则将索引为o的数据+1,将索引为1的数据转变为19(这个值无特殊意义,19是这个游戏中用不到的值。),将结果传送到移位寄存器,进行下一次判断,若0和1不相同,将直接将数据加入移位寄存器。合并结束后,将数据中的所有19元素删除,此时,输出数据长度再0~4之间,要保证数据长度一致,需要在后面将数组长度换还原为4位,移动和合并功能实现,将二维数组进行倒置,上移动功能实现,下、左、右功能依托于此添加数组倒置亦可实现。
随机值添加
依据游戏规定,每次移动后能够会增加一个2或4,若无法移动,则游戏结束,该实现方法为:获取及记录白色图片坐标→随机抽取一个坐标→将该坐标按照7:3的几率输出2和4,如果白色坐标值为零,游戏结束。
游戏积分记录
积分记录,使用数组最大值与最小值将最大积分提取出来,与时间合并写入文档。
积分排序
积分排序使用选择进行判断,在游戏开始阶段读取积分记录,积分排名实现:使用正则表达式将积分记录转变成数组,是其一个时间一个积分为一个元素,将每个元素中积分使用正则表达式提取出来,使用字符串转换为十进制数,从大到小排序,以此对时间积分数组进行排序输出。
结语
游戏设计过程结束,游戏整体粗超,但不影响运行,还有许多改进地方:
1:游戏开始结束界面
2:过程音乐添加
3:结束条件判断
4:界面布局
5:搭配键盘使用