LabVIEW小游戏实例 / 超级像素鸟 / Super Flappy Bird / 布尔灯趣味编程
1. 游戏简介
想必大家都玩过像素鸟(FlappyBird),这是基于LabVIEW的超级像素鸟(SuperFlappyBird),为什么说超级呢,因为在这个游戏中,小鸟是一个布尔灯。没错,一个小绿点,1x1 极致像素。小鸟会自动下坠,按下“空格”可以升高小鸟的位置,躲避绿色管道,获得更高的分数吧!加油,年轻人!
2. 实现方法
2.1 管道背景产生
- 通过初始化数组产生一个大小为 15×5000 ,数值为“0”的二维布尔灯数组。
- 将每等距的 10 列布尔灯中前3列替换为“1”。
- 产生一个大小为 7×3 ,数值为“0”的布尔灯数组,并通过产生 0~8 的随机整数数组决定该数组的替换纵坐标,分别对每等距的 10 列布尔灯中前3列进行替换。
2.2 背景移动机制
该部分机制类似于滚动LED广告牌。产生的管道背景为 15×5000 的布尔灯二维数组,但是前面板的显示框无法达到该长度,所以通过循环不断删除第0列元素并将其插入数组的末尾列后即可造成背景向左移动的视觉效应。
2.3 像素鸟降落起飞机制
起飞降落机制是该游戏的核心之一,像素鸟其实只为一个布尔元素,由一个数字即可控制像素鸟的高度。这里需要像素鸟具有自降落功能,并且具有按下起飞功能。
2.3.1 降落机制
像素鸟每隔一定延时(这里为 250×1 ms=250 ms ,通过这样的结构方便起飞中对像素鸟的实时控制,即不会因为降落延时而使像素鸟无法起飞),控制像素鸟高度的数值 +1 ,完成像素鸟的自降落。
2.3.2 起飞机制
通过事件结构检测空格是否按下:如果空格按下,控制像素鸟高度的数值 -1 ,像素鸟完成向上起飞 1 次。(检测空格键是否按下的方式为检测 V键 = ASCII ?)
2.4 碰壁机制
碰壁机制为该游戏的最核心部分。通过碰壁机制判断像素鸟是否触碰到管道或者上下墙面:如果触碰到,保留当前得分,游戏结束。
2.4.1 碰撞墙面检测
如果控制像素鸟高度的数值大于14或小于1,则判断像素鸟已经碰撞到墙壁,游戏结束。
2.4.2 碰撞管道检测
这里需要对每一列分别判断:每10列中后七列不具有管道,不对其进行判断;前三列具有管道,需要依次对其判断是否小于等于2.1中产生的随机整数或大于等于随机整数+7,如果符合,则判断碰撞管道,游戏结束。
2.5 得分机制
使像素鸟每穿过一次管道分数 +1 即可,每穿过一次管道需要移动有管道的3列以及没有管道的7列,共10列。故对循环计数除10,得到的商即为得分。
2.6 开场语与结束语
通过按钮对话框控件来在游戏开始时弹出开场语,在游戏结束后弹出结束语。使开始时玩家有时间进行反应,结束后得到鼓励,使整个程序更加健壮完整。
3 相关说明
- 该 LabVIEW 小游戏玩法参照了 Dong Nguyen 先生的《Flappy Bird》,希望大家尊重原创。
- 该程序作者为太原理工大学的一名19级本科生。程序有很多地方不够专业和细节,希望大家多多包涵。程序已经上传,供大家下载。希望大家可以从中学习到一些东西,也希望大家可以对其完善,修改。