LabVIEW贪吃蛇小游戏程序设计详解
一、前言
这个贪吃蛇小游戏程序主要有程序的初始化,确认贪吃蛇的位置信息,贪吃蛇的移动,贪吃蛇的food随机产生,判定food被吃掉,判定游戏失败,改变贪吃蛇的移动方向等。
游戏前面板如下图所示:
[图片:前面板控件截图]
前面板控件对应的程序框图如下图所示:
[图片:程序框图截图]
程序的组成部分如下:
二、程序初始化
该程序的初始化主要有游戏界面,按键是否可以按下,贪吃蛇移动方向,贪吃蛇位置、长度,随机food,游戏状态的初始化。
- 游戏界面的初始化
使用初始化数组生成一个30*30的游戏界面。
在游戏界面初始化应提前于贪吃蛇的位置信息和food随机位置信息的初始化之间,同时初始化了贪吃蛇的移动方向、速度、游戏状态和按键许可。
- 贪吃蛇的位置信息初始化
使用索引数组、for结构、替换数组子集产生一个长度为4的贪吃蛇。
在这里初始化的是一个长度为4的贪吃蛇,按这游戏规则一般贪吃蛇出现的位置是固定的,所以蛇的位置信息应提前于food,根据蛇的位置信息来判断food随机出现的位置。
- food的位置信息初始化
使用替换数组子集产生随机food。
food的产生都是随机性的,同时不可以于蛇的位置信息重叠。同时使用簇来记录food的位置信息和状态信息,以方便得到贪吃蛇是否吃到food和food的再次随机刷新。
三、确认贪吃蛇的位置信息
想要贪吃蛇能够做到移动,我们需要确认贪吃蛇的头位置信息和长度信息。
[图片:确认贪吃蛇位置信息流程图]
这里使用了数组大小和索引数组分别获得贪吃蛇的长度信息和头位置信息。
四、贪吃蛇的移动和是否吃到food
[图片:贪吃蛇移动和吃food流程图]
贪吃蛇的移动就根据贪吃蛇的移动方向信息进行判断,控制对行或列进行加1或减1的操作。主要是在是否吃到food进行贪吃蛇的长度控制,这里就是进行头的位置信息和food的位置信息进行对比从而确定是否吃到food,当没有吃到food如上图所示进行使用替换数组子集将下一个位置信息点亮,同时熄灭最后一个位置信息。当吃到food就不进行熄灭操作,同时改变food的状态信息如下图所示。
[图片:吃到food后的状态变化]
当贪吃蛇移动一次为了避免快速按键操作这里有一个按键是否按下的布尔赋值来控制按键操作。
五、贪吃蛇的按键操作
这里直接是使事件中的本VI,键按下,V键来控制贪吃蛇的运动方向,在这里改变方向否不可以直接再次改变移动方向这里就要使用移动中的按键是否按下标志信号,只有当改变方向后运动一次后才能再次改变方向,同时当贪吃蛇向一个方向运动时不能改变到相反的方向进行操作如上转下,下转上,左转右,右转左。
- 上
[图片:上方向键操作]
- 下
[图片:下方向键操作]
- 左
[图片:左方向键操作]
- 右
[图片:右方向键操作]
六、再次获得贪吃蛇的位置信息
当贪吃蛇位置改变后应马上获取其位置信系,否则可能出现数据错误。
七、贪吃蛇吃点food后产生随机food
[图片:产生随机food流程图]
这里就根据food状态信息,通过0-1随机数产生与贪吃蛇不重叠的food,同时更新food的位置信息和状态信息。
八、游戏失败判定
- 撞墙判断
[图片:撞墙判断流程图]
这里是30*30的游戏界面只要头位置信息小于0或大于29贪吃蛇就相当于撞墙。
- 头触碰身体判断
[图片:头触碰身体判断流程图]
这里就是贪吃蛇头没碰墙时,使用for结构获取除头以外的位置信息,与头的位置信息作比较当有相同的信息就说明贪吃蛇头碰到了身体。
九、游戏难度控制
这里直接是根据贪吃蛇的长度来改变游戏难度。
十、总结
这是我用labview做的一个贪吃蛇小游戏,请帮我对各部分进行一个详细的说明内容:该贪吃蛇小游戏程序主要由以下几个部分组成:
-
程序初始化:包括游戏界面的初始化、贪吃蛇的位置信息初始化、food的位置信息初始化等。
-
确认贪吃蛇的位置信息:通过数组大小和索引数组获得贪吃蛇的长度信息和头位置信息。
-
贪吃蛇的移动和是否吃到food:根据贪吃蛇的移动方向信息进行判断,控制对行或列进行加1或减1的操作,并根据头的位置信息和food的位置信息进行对比确定是否吃到food。
-
贪吃蛇的按键操作:使用事件中的本VI、键按下、V键来控制贪吃蛇的运动方向,并通过按键是否按下的布尔赋值来控制按键操作。
-
再次获得贪吃蛇的位置信息:当贪吃蛇位置改变后应马上获取其位置信息,否则可能出现数据错误。
-
贪吃蛇吃点food后产生随机food:根据food状态信息,通过0-1随机数产生与贪吃蛇不重叠的food,同时更新food的位置信息和状态信息。
-
游戏失败判定:包括撞墙判断和头触碰身体判断。
-
游戏难度控制:根据贪吃蛇的长度来改变游戏难度。
以上各部分的具体实现细节和流程可以参照程序的具体设计进行了解。
原文地址: https://www.cveoy.top/t/topic/hJha 著作权归作者所有。请勿转载和采集!