贪吃蛇游戏Labview课程设计报告.docx_第1页
贪吃蛇游戏Labview课程设计报告.docx_第2页
贪吃蛇游戏Labview课程设计报告.docx_第3页
贪吃蛇游戏Labview课程设计报告.docx_第4页
贪吃蛇游戏Labview课程设计报告.docx_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Labview课程设计 贪吃蛇学院: 信息科学与工程学院班级: 自动化1302 姓名: 赵仕军 学号: 20137214 引言:Labview是一款程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C和BASIC开发环境,但是 Labview与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而 Labview使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。 同C语言和BASIC语言一样,Labview也是通用的编程系统,有一个完成任何编程任务的庞大函数库。Labview的函数库包括数据采集、GPIB、串口控制、数据分析、数据显示及数据存储等。Labview也有传统的程序调试工具,如设置断点、以动画方式显示数据及其子程序的结果、单步执行等等,便于程序的调试。Labview是一种用图标代替文本行创建应用程序的图形化编程语言。传统文本编程语言根据语句和指令的先后顺序决定程序执行顺序,而Labview采用数据流编程方式,程序框图中节点之间的数据流向决定了VI及函数的执行顺序。VI指虚拟仪器,是Labview的程序模块。Labview提供很多外观与传统仪器类似的控件,可用来方便地创建用户界面。用户界面在Labview中被称为前面板。使用图标和连线,可以通过编程对前面板上的对象进行控制。这就是 图形化源代码,又称G代码。Labview的图形化源代码在某种程度上类似于流程图,因此又被称作程序框图代码。本学期通过对于Labview的学习对于Labview有了一定的认识,在此基础上, 在labview平台上,利用设计多子VI,我设计了一个贪吃蛇的小游戏。包含了失败提醒以及统计分数、开始暂停的功能。目录一、 程序设计1、 程序设计流程.2、 模块设计及说明3、 调试运行4、 程序不足分析二、 心得体会参考文献一、 程序设计1、 程序设计流程1.1程序设计分析1)设计一个主界面,主界面的显示通过二维布尔型数组(后面按称作LED)实现。2)设计食物的随机产生,通过随机产生一系列数,每次产生两个,作为食物的坐标,并且相应坐标位置数组上赋值,点亮LED灯。3)设计分数统计,并显示。4)设计按键操作,实现蛇的各个方向移动。每个按键赋予一个值,根据值判断方向,并且在相应方向上增加以及删除节点。5)吃食物,蛇移动等相关子VI的建立。1.2设计流程全局变量global VI添加main VI添加按键 KeyScan 子VI修改global全局VImove 子VI初步完成,调试成功(缺少isDead VI)添加显示freshDisplay VI添加数据初始化initialize.VI添加食物产生randFood.VI添加失败提醒isDead.VI添加按键处理keyAction.VI(新建)调试运行2、模块设计及说明2.1主VI模块 main.vi前面板包括蛇显示界面,蛇移动范围界面,分数显示界面,蛇移动相关操作操作按键主程序组成:包含了一个主要while循环结构及分支while循环、顺序结构、条件结构、菜单操作模块、初始化局部变量分数、初始化变量模块子VI、按键值赋值模块子VI、根据按键值定义蛇动作模块子VI、显示二维数组赋值模块子VI、显示LED赋值数组、判断能否继续游戏判定子VI、食物随机生成子VI、蛇吃到食物处理子VI、蛇移动子VI。分数显示模块:放在吃掉食物为真的情况下,不断加1达到分数累计的作用。分数模块初始化:主VI程序框图:2.2全局变量模块 global.vi1)显示模块全局变量存放每一位led灯的状态,0表示灭,-1表示亮2)蛇头、蛇尾节点全局变量存放蛇头、蛇尾的位置、方向信息3)蛇转向点全局变量存放蛇头转向的位置、方向信息4)蛇转向信息全局变量cur_turn_index记录当前时刻方向next_turn_index记录下一时刻方向turn_size记录转向次数(设定0为向上,1为向下,2为向左,3为向右转向)4)画面最大显示存放显示界面以及蛇运动范围最大行、列格数信息。5)二维数组值用于控制二维LED点阵数组的量灭6)食物位置全局变量存放随机产生的食物的位置信息2.2初始化各全局变量initialize.vi生成一个宽度为18X18的显示界面,最外边一圈LED灯点亮。同时生成一个长度为三个方形LED,头节点位于坐标为(3,5),尾节点 位于坐标(3,3)的方块蛇,出始运动方向向右。2.3按键赋值KeyScan.vi前面板:主程序:实现对上下左右键值赋值上0、下1、左2、右3,并设立使能信号变量,有键值才使能判断按键动作子VI有效。2.3按键动作判断KeyAction.vi判断动作并将动作信息传递给蛇头,并保存动作节点位置相关信息,包含转向点的坐标,转向次数,以及转向点的转向2.4刷新显示updateDisplay.vi前面板:根据0灭,-1亮的原则。将snake_buff数组值与0比较,等于0,对应坐标布尔数组赋值F,不等于0,对应坐标布尔数组赋值T,给二维布尔数组LED显示。程序框图:2.5判断游戏是否继续isDead.vi判断蛇是否撞墙或者咬到自己,满足上述情况deadFlag布尔型显示控件,作为标志位显示为1,用于触发相应条件语句。2.5判断蛇是否吃掉食物isFoodEaten.vi判断蛇是否碰到食物,碰到食物便增加一个头节点。通过四个方向来判断,在四个方向哪个方向上增加节点。2.6随机产生食物 randFood.vi随机在游戏界面横坐标及纵坐标中产生随机数,组合作为食物位置并点亮相应LED灯,同时限定了食物坐标的范围是在18X18界面范围内。2.7蛇移动move.vi蛇根据按键方向移动,过程中不断更新头节点和尾节点坐标以及 方向。如果吃到了食物,会增加一节长度。运动的同时会删除尾节点,延伸到下一个节点。将转向信息赋值给尾节点,同时将值赋值到二维数组snake_buff中点亮相应LED灯。2.8菜单栏设计开始(start)、暂停(stop)、退出(停止)功能实现:1) 失败后点击开始,重新初始化程序,以及各变量;2) Stop暂停游戏,并且点击开始能当前继续游戏;3、调试运行运行界面如下:点击开始:外圈灯全部点亮,生成一条长度为三的蛇,初始方向向右移动。同时产生食物,初始化坐标为(6,6)。成功吃到食物:增加一个节点并加一分,当前得分为6分失败提醒:弹出一个对话框,下一次开始又进入初始化,并且分数记零5、 程序不足分析1)按键操作采用的是鼠标点击界面的方向键,达到蛇运动控制效果,而非通过键盘操作直接控制2)蛇形采用简易的方块,并没有做到逼真的蛇形3)计分单一化,应当设置关卡,采用过关制,并且每一关的蛇移动速度会加快,从而增加游戏难度4)界面不够美观二、 心得体会从学长那得知Labview这门课很重要,无论是以后继续研究生,或是直接工作,对自己的帮助都很大。这个软件的实用性很强啊,学好了用于实际中,可以省下很多不必要的工作。这门课的发展前景,即使我们在以后的工作中不在这方面发展,这门课留给我们的学习思想和技术技能都是很宝贵的。 Labview采用的是G语言,也就是图形化语言,它不仅是一种编程环境,也是一门编程语言。Labview因为采用的是图形化语言,比较适合于专业知识比较薄弱的学习者。Labview采用的编程思想和传统C语言一样,是嵌套,主函数包含子函数的思想。所以,当要编写比较大的程序时,整个结构就显得很大很复杂,编写起来比较困难。同时感觉这是一门实践性很强的课,很多知识是从上课听老师讲的,或是书上看来的,而且听完、看完之后,自己还觉的不错,觉得自己已经掌握的很好了,但真到实际做东西的时候,就会觉得困难重重,这时再去查书,便有了对知识的更深层次的理解,其实在这方面更应该感谢网络给我们带来的方便,有任何问题,上网搜一下,很多问题都可以迎刃而解,而且很多网友都有自己独特的见解,在他们的讨论中看到了很多有用的东西。在这次虚拟仪器设计过程中,遇到很多的困难,我通过上网,加一些QQ群,论坛各种询问,在这样的努力下,终于实现了功能,我当时特别兴奋。学以促用,用以促学,我们感觉这也是这门课教给我们的重要知识。带着问题学习才能学到真正的知识。在这学期的学习中我们学到了很多,也认识到我们需要学的东西更多,仅凭现在学到的东西是远远不够的,要想在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论