基于labview的贪吃蛇游戏程序设计.doc
《基于labview的贪吃蛇游戏程序设计.doc》由会员分享,可在线阅读,更多相关《基于labview的贪吃蛇游戏程序设计.doc(15页珍藏版)》请在咨信网上搜索。
基于labview的贪吃蛇游戏程序设计(完整版) (文档可以直接使用,也可根据实际需要修改使用,可编辑 欢迎下载) 成 绩 评 定 表 学生姓名 班级学号 专 业 通信工程 课程设计题目 贪吃蛇游戏设计 评 语 组长签字: 成绩 日期 20 年 月 日 课程设计任务书 学 院 信息科学与工程 专 业 通信工程 学生姓名 班级学号 课程设计题目 贪吃蛇游戏设计 实践教学要求与任务: 1.学习LabVIEW的虚拟仪器原理、设计方法和实现技巧; 2.掌握简单LabVIEW程序的编程实现; 3.掌握简单通信系统设计和分析方法; 4.采用Labview语言,实现贪吃蛇游戏设计。 (1)通过检索、查资料、调查研究、确定方案、画出组成系统结构方框图; (2)采用LabVIEW实现贪吃蛇游戏设计; (3)系统调试与改进,调整系统参数,分析系统运行结果; (4)写出设计总结报告。 工作计划与进度安排: 20周(上) 学习LabVIEW虚拟仪器原理、设计方法和实现技巧,掌握简单LabVIEW程序的编程实现,掌握简单通信系统设计和分析方法。 20周(下) 采用LabVIEW语言,实现贪吃蛇游戏设计,并对系统进行性能分析。 指导教师: 201 年 月 日 专业负责人: 201 年 月 日 学院教学副院长: 201 年 月 日 目 录 1 目的及基本要求 1 2 贪吃蛇游戏设计原理 1 3 贪吃蛇游戏设计和仿真 1 3.1 前面板设计 1 3.2后面板程序框图 2 3.3 程序改进 6 3.4 程序存在的不足 8 4 结果及性能分析 9 4.1 运行结果 9 4.2性能分析 10 参考文献 11 1 目的及基本要求 本程序是基于常看到的一款小游戏贪吃蛇而设计的,即有一条小蛇不停地在屏幕上游走,吃各个方向上出现的苹果(姑且称它为“苹果”),越吃越长,只要蛇头碰到屏幕四壁或者碰到自己的身子,游戏就立刻结束。本程序基于传统贪吃蛇游戏的特点利用LabVIEW制作的一款完整的迷你贪吃蛇游戏。 熟悉LabVIEW开发环境,掌握基于LabVIEW的虚拟仪器原理、设计方法和实现技巧,运用专业课程中的基本理论和实践知识,采用LabVIEW开发工具,实现贪吃蛇游戏的设计和仿真。要求通过本课程设计使学生熟悉LabVIEW开发环境,掌握基于LabVIEW的虚拟仪器设计原理、设计方法和实现技巧,使学生掌握通信系统设计和仿真工具,为毕业设计做准备,为将来的学习及今后从事科学研究、工程技术工作打下较坚实的基础。 2 贪吃蛇游戏设计原理 贪吃蛇游戏大体上可分为以下几个部分: 1) 控制部分 就是通过输入输出来控制蛇的运动 2) 逻辑部分 进行判断蛇吃了没有 是否撞墙 同时把蛇的长度增加一节 还要实现分数的计算 3) 图象显示部分 就是将游戏显示出来 本程序的主要实现如下功能:1.小蛇在屏幕上不停的游走;2.用键盘方向键可控制小蛇的移动方向;3.吃过一个苹果后小蛇长度增加并随机产生另一个蛋;4.小蛇碰到四壁或者碰到自己的身体时游戏结束并给出得分和提示是否继续;5.游戏可以有多种难度选择等 3 贪吃蛇游戏设计与仿真 3.1 前面板设计 采用LabVIEW中提供的“Express XY图”作为游戏界面,显示蛇和苹果,这样就可以通过方向键来移动小蛇到想要去的地方。对XY图的属性做如下修改:1.去除标尺及标签,设置标尺为0:1000;2.去除两个方向的网格,使最终屏幕全黑;3.修改各条曲线的宽度、颜色和点样式,使小蛇苹果能够以不同样式显示。 图1 主程序前面板 3.2 后面板程序框图设计 如何控制蛇移动去吃苹果同时避免碰到自己的身体或者撞墙是一个复杂的程序。特此将程序分成多个子程序来编写使程序简单明了。下面分别介绍贪吃蛇程序中的各个子程序。 1.主程序程序框图 主程序程序框图运用平铺式顺序结构,第一帧是游戏介绍,第二帧是程序主程序。 在主程序的上半部分采用一个while循环、一个事件结构和一个条件结构来设置游戏的输入循环,根据按键以否来判断游戏的下步动作方向。在主程序的下半部分运用while循环来控制游戏的循环。游戏结束时通过用户的输入指令来决定游戏是否循环,输入“Yes”指令时游戏继续,否则游戏结束跳出循环。在while循环里再运用一个while循环来控制游戏的运动循环,当发生“自杀”事件或者“撞墙”事件时游戏结束跳出循环,否则游戏继续循环。 图2 主程序程序框图 2.XY坐标子程序 此程序的作用是把蛇的活动按有无蛇身、苹果赋值。通过XY坐标来显示蛇移动的轨迹,同时删除已走过的轨迹路径,避免与新的路径混淆使程序出错。程序框图见下面: 图3 输入XY坐标 图4 删除XY坐标 3.小蛇的移动控制 由于蛇本身是一个可增加元素的数组,所以用一个含两个一维方向数组的簇来进行操作。每次读取坐标或者增添完坐标后都要用簇解绑及簇捆绑来处理,这样也便于在XY图中显示。 控制小蛇游走的方法是给定一个方向direction,然后利用这个direction的值来控制当前点与下一点的变换。小蛇不停的移动,为了使之与苹果碰撞后能便捷的增加长度,这里采用这样的方法实现:小蛇每按direction移动一个,就在小蛇数组的开头添加一个点(此时这两个点是相邻的),然后将添加的点与苹果所在坐标比较,如果不同,就将蛇数组的最后一个元素删除,表示没有吃到苹果;如果相同,就保留这个元素(此时,相对于前一个位置时,小蛇的长度增加了),并且删除这个苹果,重新随机产生另一个苹果。循环往复(在while循环上添加移位寄存器)直到游戏结束。插入蛇头新坐标的子程序框图 图5 蛇头新坐标的子程序框图 4.苹果增减的控制 对于苹果的操作主要是判断当前苹果的位置与蛇头位置是否相同,在相同的情况下,需要将苹果的位置重新赋值,这是处理一个苹果的时候。如果要设计多个苹果,只需判断当前苹果的个数是否减少,并在减少后随机产生一个新的苹果。程序里一次性最多可以产生20个苹果,用数组存储。当苹果的数量明显少于最大值时就随机产生一个苹果。当蛇头与苹果的位置相同时消掉该苹果,否则保留该苹果。为了便于苹果与蛇同时在屏幕上显示,特将苹果套用蛇数组的格式绑定为簇,然后与蛇数组合并为一个数组后同时显示在XY图上。 图6 苹果增减程序框图 5.撞墙事件 把蛇当前所在的位置的坐标与围墙的宽度作比较,如果超出了宽度范围则视为撞墙事件游戏结束,否则游戏继续。在设计程序中运用了两个<、两个>和一个逻辑与运算符号参与编辑,通过X、Y坐标与World Size作比较,最后结果为真则游戏继续,否则游戏结束。 图7 撞墙事件程序框图 6.自杀事件 自杀事件比撞墙事件复杂,不过思路都一样,都是通过坐标的比较来判断。不同是的自杀事件是通过判断蛇头的坐标与蛇身的坐标是否一致,如果一致则认为发生了自杀事件,并跳出循环结束游戏,否则游戏继续。 再此VI中运用了两个条件结构来判断是否结束程序;运用一个WHILE循环比较蛇头与蛇身的坐标,当蛇头坐标与蛇身坐标一致时跳出循环游戏结束(只有当蛇的位移坐标有两个以上时才开始判断是否发生自杀事件)。以下是本VI的程序框图: 图8 自杀事件程序框图 3.3 程序改进 1.控制方向的改进 在整个程序运行中我发现一个问题,即在游戏运行过程中想要准确控制蛇的移动方向不是很方便,因为原程序仅仅采用两个方向键“left”键和“right”键来控制。他把方向按不同的象限分成八个部分,沿逆时针方向依次分布为0、1、2、3、4、5、6、7,其中X轴正半轴是0负半轴是4,Y轴正半轴是2负半轴是6。根据这样的划分当按下不同的键时有不同的反应。 当按下“left”键时,程序自动把当前蛇的方向值加1(设为X)后与程序允许的最大方向值Y做比较。如果X>Y则返回值“true”,蛇向X值所指向的方向移动;否则返回值“false”,蛇向0值所指向的方向移动。 图9 left键控制方向的程序框图 当按下“right”键时,蛇移动方向控制与“left”键相似,不同的是把蛇当前的方向值减1后的值X与方向值0做比较。如果X<0则返回值“true”,蛇向方向值为7的方向移动;否则返回值“false”,蛇向反向值为X的方向移动。 图10 right键控制方向的程序框图 这样的设置不是很理想,需要用户在游戏过程中不断的准确计算好下一步的方向值。话说这样设计可以让用户在游戏过程中锻炼思维的反应力和脑计算力,但是同时给用户在游戏过程中带来很大的不便,不利于游戏的继续进行。我构思着如果把方向键从复杂的左右两键改成简单的上下左右四个键,不仅可以形象的描述各个方向的控制移动,而且可以提高用户的玩游戏的速度,有一个好的心情。 为此我经过大量的实验和改进,最后终于把自己的构想用程序表达出来了。下面简单介绍我修改的程序。 我的构思主要是得益于原作者的程序思路,是在他的基础上修改的。在方向控制程序中运用了一个while循环、事件结构和条件结构。运用事件结构是因为需要运用事件结构中事件数据节点的“V键”节点来控制方向的改变,而事件结构是与while循环配套使用的。运用条件结构是便于不同方向键按下时激活不同的条件状态控制蛇的移动。 下面仅就“down键”来说明我的思路。当按下“down键”时,把当前的方向值X与下方向值6做比较,如果结果为“true”时输出方向为“down”,如果结果为“false”时输出方向为“down”,即强制性的向下移动。其他方向上的控制跟“down”方向的控制相同,中心思想是强制性实施动作。 图11 down键控制的程序框图 2.添加“游戏暂停”按钮 原程序中没有暂停按钮是一个很大的缺憾,假设发生这种情况即用户使用这个程序的过程中可能会有急事需要离开可是又不想结束掉正在运行的程序,这样的设计就不够人性化。如果添加一个“暂停”按钮这个问题就可以迎刃而解了。为此我在“运动循环”中添加了一个“暂停”按钮。即在一个while循环中添加一个“等待下一个整数倍毫秒”来控制等待时间,一个“非”来激活命令。 图12 暂停按钮的程序框图 3.4 程序存在的不足 (一)、可能是时间太过仓促,本程序在设计上存在一些不足。我把自己看到的一些不足列举如下: 1.程序初始化时蛇身过长。虽说在设计程序时有专门控制蛇身长度的控件,可是在修改初始化时蛇身长度的数值后蛇身的长度依然没有太多的变化。 2.蛇身长度无节制的增长。蛇在移动过程中蛇身长度会增长,即使是在没有吃掉苹果时蛇身的长度也会增长,这些都有悖常理。 3.感觉把collision_self.vi程序弄的复杂化了。 (二)、我看不懂的部分程序 由于程序很复杂,我有很多看不懂的地方,列举如下: 1.我不知道子VI是如何运用的。在程序中常用子VI,这虽然便于简化程序框图,却给我读程序造成很大的不便。不便的原因主要是在上课实践过程中没有运用过子VI完成作业或者做练习,虽然我在潜意识里知道子V I的用途很大。看着遍布程序框图的子VI我不知道它怎么运用、为什么这样运用,练习子VI的原程序框图了解该子VI后我还是不知道如何运用。 2.我不知道两个while循环是如何合作的。在主程序的第二帧中的那两个子while循环没有任何的联系,我不知道它们是怎么合作的。 4 结果及性能分析 4.1 运行结果 1.未运行的时候前面板如图13 图13 未运行时前面板 2.运行的时候前面板如图14 图14 运行时的前面板 4.2 性能分析 开头往往是最难的,当我们终于解决了如何让一个点在XY图上动起来之后,一切都是那么的顺其自然了。我们想到了一个又一个问题,如何显示蛋,如何吃掉蛋,如何吃掉蛋之后让蛇加一截,如何让蛇撞墙之后结束游戏…..发现问题和解决问题的过程都是艰辛且快乐的。对于最后的成品,已经基本上达到了我们的预期。另外,这款游戏的后续开发空也间很大,可以添加很多想法,比如可以增加蛋的数量,可以增加蛋的品种,对于不同的蛋产生不同的特效,可以有突然改变方向、突然改变速度、增长蛇身长度、无敌小蛇(无死亡限制)、突然隐身蛇身、旋转石头模式等等,由于时间有限,这些想法没有一一去实现,但我们仔细考虑下这些都是可行的。比如增长蛇身长度,可以根据当前得分,在蛇尾按方向方向反方向增加蛇数组元素,当然这可能导致小蛇立刻死亡,当然这可以作为游戏的一个难度,需要玩家在适当的方向吃小蛋;对于无敌小蛇模式,那也比较简单,可以采用一个计数值并使用一个条件结构,在这段计数值内使程序不执行蛇头位置的比较;而隐身小蛇只需要使蛇身在一段计数值内不在XY图上显示,然而小蛇实际是继续运动的;旋转石头是基于变态难度中产生的石头,让其围绕中心旋转,增加游戏难度等等。 参考文献 [l] labview入门与提高.赵品编著.人民邮电出版社.2000.11 [2] labview 高级应用.赵品编著.人民邮电出版社.2000.11 [3] labview印刷电路板设计教程.肖玲妮编著.清华大学出版社2003.8 [5] 虚拟仪器设计基础教程. 黄松岭编著. 清华大学出版社.2021.11 [6] 测试工程与labview应用.戴鹏飞、王胜开、王格芬、马欣编著.电子工业出版社.2006- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 labview 贪吃 游戏 程序设计 完整版
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文