本程序是基于常看到的一款小游戏贪吃蛇而设计的,即有一条小蛇不停地在屏幕上游走,吃各个方向上出现的食物(姑且称它为“食物”),越吃越长,只要蛇头碰到屏幕四壁或者碰到自己的身子,游戏就立刻结束。本程序基于传统贪吃蛇游戏的特点利用LabVIEW制作的一款完整的迷你贪吃蛇游戏。 2.1系统功能 (1)小蛇在屏幕上不停的游走; (2)用键盘左右方向键可控制小蛇的移动方向; (3)吃过一个食物后小蛇长度增加并随机产生另一个食物; (4)小蛇碰到四壁或者碰到自己的身体时游戏结束并给出得分和提示是否继续; (5)游戏可以有多种难度选择等。 2.2系统软件组成 整个系统由前面板和程序控制框图两部分,其中程序控制框图又分为XY坐标子程序,小蛇的移动控制模块,食物增减的控制,.撞墙事件和自杀事件模块,还有最为重要的主程序程序框图。 2.3主程序组 主程序的组成:包含了一个主要while循环结构及分支while循环、顺序结构、条件结构、初始化局部变量分数、初始化变量模块子VI、按键值赋值模块子VI、根据按键值定义蛇动作模块子VI、显示二维数组赋值模块子VI、判断能否继续游戏判定子VI、食物随机生成子VI、蛇吃到食物处理子VI、蛇移动子VI。分数显示模块:放在吃掉食物为真的情况下,不断加1达到分数累计的作用。
2.4 软件设计思想 进入游戏界面之后可选择游戏难度。程序随机定位贪吃蛇初始位置,当然也可以选择退出游戏。开始之后便进入游戏。其流程图如下。
图2-1主程序流程图 第三章 系统软件部分设计3.1系统整体程序框图 系统整体程序框图就是用户所编写的主程序,也就是用户界所对应的底层程序,其中包括整个程序的运行控制,事件结构的设置,调用各种子程序的命令。
图3-1 贪吃蛇小游戏系统程序框图 3.2.系统前面板界面 图3-2为用户界面,用户界面的实现主要依靠 LabVIEW 提供的各种显示控件,包括波形显示控件、数据显示控件,指示灯显示报警控件等。程序运行时,用户可以在前面板进行控制,同时后面板也在运行,只是用户只需要控制前面板就可以了,如果需要更改程序时,就可以在后面板更改程序功能[41]。
图3-2贪吃蛇小游戏系统前面板 下面将详细介绍各个模块的设计原理。3.3各部分模块子程序设计原理 本系统的软件测试部分主要包括以下几个模块:XY坐标模块、小蛇的移动控制模块、食物增减的控制模、自杀事件模块和撞墙事件处理模块。 图3-3系统软件设计部分组成框图 3.4 XY坐标模块 此程序的作用是把蛇的活动按有无蛇身、苹果赋值。通过XY坐标来显示蛇移动的轨迹,同时删除已走过的轨迹路径,避免与新的路径混淆使程序出错。是这样实现的:先把原来的x,y数组簇按名称解除捆绑,然后用两个替换数组子集,这样就可以用新的x,y坐标替换原本的x,y坐标,新的x,y坐标按名称捆绑,然后输出新的x,y坐标簇。同时把原来的x,y坐标簇按名称解除捆绑,用两个删除数组元素删除原本的x,y坐标簇,从而实现功能。程序框图见下面:
图3-4输入XY程序框图
图3-5删除XY坐标模块 图3-6 XY坐标前面板显示 3.5小蛇的移动控制模块模块 由于蛇本身是一个可增加元素的数组,所以用一个含两个一维方向数组的簇来进行操作。每次读取坐标或者增添完坐标后都要用簇解绑及簇捆绑来处理,这样也便于在XY图中显示。 控制小蛇游走的方法是给定一个方向direction,然后利用这个direction的值来控制当前点与下一点的变换。小蛇不停的移动,为了使之与苹果碰撞后能便捷的增加长度,这里采用这样的方法实现:小蛇每按direction移动一个,就在小蛇数组的开头添加一个点(此时这两个点是相邻的),然后将添加的点与苹果所在坐标比较,如果不同,就将蛇数组的最后一个元素删除,表示没有吃到苹果;如果相同,就保留这个元素(此时,相对于前一个位置时,小蛇的长度增加了),并且删除这个苹果,重新随机产生另一个苹果。循环往复(在while循环上添加移位寄存器)直到游戏结束。插入蛇头新坐标的子程序框图如下
具体完整内容见附件中的word文档:
贪吃蛇完整设计文档和源码.zip
(1.12 MB, 售价: 3 E币)
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|