会员注册 | 登录 | 微信快捷登录 QQ登录 微博登录 | 帮助中心 人人文库renrendoc.com美如初恋!
站内搜索 百度文库

热门搜索: 直缝焊接机 矿井提升机 循环球式转向器图纸 机器人手爪发展史 管道机器人dwg 动平衡试验台设计

   首页 人人文库网 > 资源分类 > DOC文档下载

基于μC_OS系统ARM9硬件平台的贪吃蛇C语言游戏设计.doc

  • 资源星级:
  • 资源大小:115.00KB   全文页数:18页
  • 资源格式: DOC        下载权限:注册会员/VIP会员
您还没有登陆,请先登录。登陆后即可下载此文档。
  合作网站登录: 微信快捷登录 支付宝快捷登录   QQ登录   微博登录
友情提示
2:本站资源不支持迅雷下载,请使用浏览器直接下载(不支持QQ浏览器)
3:本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

基于μC_OS系统ARM9硬件平台的贪吃蛇C语言游戏设计.doc

1基于μC/OS系统、ARM9硬件平台的贪吃蛇游戏设计摘要程序核心思想游戏开始后进入游戏界面。首先初始化蛇的坐标,食物的坐标。线程基本流程判断是否是暂停阶段,是否有有退出按键,游戏是否有结束,如果都没有就执行,如果游戏结束了就重新游戏或者退出。设计要求1、能够通过方向键来控制蛇的移动方向2、蛇吃到食物后能够重新出现食物并且能够更新和显示分数3、游戏开始的时候能通过手动进行游戏级别的调整4、每吃到5个食物后,游戏能够自动进入下一关,并能通过增加蛇的移动速度来增加游戏的难度5、游戏开始的时候能够手动对游戏级别进行调整开发平台信息一、μC/OS操作系统μC/OS和μC/OSII是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU上。μC/OSII中最多可以支持64个任务,分别对应优先级0~63,其中0为最高优先级。63为最低级,系统保留了4个最高优先级的任务和4个最低优先级的任务,所有用户可以使用的任务数有56个,每个任务都有不同的优先级,用户在创建任务的时候定义该任务的优先级。uC/OS操作系统中每个任务可以有5种状态休眠态、就绪态、运行态、等待或挂起状态、中断态,在任一个时候,任务的状态一定是这5种状态之一。任务在等待消息、邮箱或者信号量等事件的到来的时候会进入挂起状态,当任务接到消息以后,则处于就绪状态。二、试验箱基本硬件信息1)CPUS3C44B0X,ARM7TDMI,工作在60MHz2)BIOS2M,NORFLASH3)内存8MSDRAM4)海量存储器16M,NANDFlash5)键盘17键数字小键盘6)显示器32024016级灰度的LCD(可选256彩色LCD),四线电阻式触摸屏7)USB接口1.1标准8)串行口两个,最高波特率115200kb9)网络接口10M以太网10)CAN接口125Kb,250Kb,500Kb,1Mb11)调试接口JTAG,14针,20针12)电机直流电机(有刷),步进电机(带1/64减速器)13)A/D8路10位,满量程2.5V,已用前4路14)D/A10位,满量程4.096V15)LED8个,共阴极216)音频输出44.1KHz17)FPGA(可选)ACEX1K系列,扩展输出100I/O,与S3C44B0X外部总线直接相连18)扩展口2个二、开发集成环境ARMSDT2.5集成开发环境ARMSDT2.5集成开发环境(ARMProjectManager)是ARM公司为方便用户在ARM芯片上进行应用软件开发而推出的一整套集成开发工具。ARMSDT可在Windows95、98、NT以及Solaris2.5/2.6、HPUX10上运行,支持最高到ARM9含ARM9)的所有ARM处理器芯片的开发,包括StrongARM。ARMSDT包括一套完整的应用软件开发工具1、armccARM的C编译器,具有优化功能,兼容于ANSIC。2、tccTHUMB的C编译器,同样具有优化功能,兼容于ANSIC。3、armasm支持ARM和THUMB的汇编器。4、armlinkARM连接器,连接一个和多个目标文件,最终生成ELF格式的可执行映像文件。5、armsdARM和THUMB的符号调试器。详细设计一、属性解释贪吃蛇游戏设计最主要在于蛇移动的控制,在设计中分别用两组一维数组snake.U16x100和snake.U16x100来分别0存放蛇身的坐标,x100代表横坐标,y100代表纵坐标。蛇的宽度设置为10个像素点。变量direction为移动方向,foodx,foody为食物的坐标。function.stop为判定是否是要结束退出游戏,function.restar用来在游戏结束后重新开始游戏。1000/snake.level为蛇的移动速度(在程序中用1000/snake.level作为每次循环的延迟时间),当snake.level的记录的等级越高的话,蛇的移动速度会越快(因为延迟时间越小),难度越高。snake.life用来判定游戏是否结束,snake.life1代表蛇已死,游戏结束。游戏的其他相关变量还有snake.node,用来记录蛇的节数snake.score用来记录游戏得分snake.level用来记录游戏的等级。二、相关初始化过程1、堆栈大小定义、任务优先级定义OS_STKMain_StackSTACKSIZE8{0,}VoidMain_TaskvoidIddefineMain_Task_Prio12OS_STKControl_StackSTACKSIZE8{0,}voidControlvoidIddefineControl_Prio152、任务的创建OSTaskCreateMain_Task,void0,OS_STKMain_StackSTACKSIZE1,Main_Task_PrioOSTaskCreateControl,void0,OS_STKControl_StackSTACKSIZE81,Control_Prio3、初始化画笔宽度SetPenWidthpdc,10//初始化画笔宽度为10个像素点4、初始化蛇的节数snake.node5//游戏开始时蛇有5节35、初始蛇尾巴的坐标snake.x010snake.y010初始化蛇各节的坐标fori0i0i{ifsnake.xisnake.xsnake.nodesnake.yisnake.ysnake.node{snake.life1break}elsecontinue}82蛇头撞到游戏界面边框判断蛇是否撞到边框的方法,只要比较蛇头的X、Y坐标是不是同时和边框的X、Y坐标一样,一样的话,即表明蛇撞到边框,游戏结束。例如本设计中以(10,45)为坐标原点的情况下,只要保证蛇头的X坐标在0620之间(像素点为单位),蛇头Y坐标在0415之间(像素点为单位),即表示蛇没有撞到边框。ifsnake.xsnake.node0||snake.xsnake.node620||snake.ysnake.node0||nake.ysnake.node415snake.life15、监听键盘动作任务通过等待消息而处于挂起状态,当任务接到消息以后,则处于就绪状态,然后开始判断所接受到的这个消息是不是需要处理,如果是执行相应的处理函数,最后,删除所接收到的消息,继续挂起等待下一条消息。VoidMain_TaskvoidId//Main_Test_Task{U8xiaoxiPOSMSGpMsg0for{pMsgWaitMessage0switchpMsgMessage{caseOSM_KEYxiaoxionKeypMsgWParam,pMsgLParamifxiaoxidefaultbreak}OSTimeDly200DeleteMessagepMsg}}U8onKeyintnkey,intfnkey{switchnkey{CasereturndefaultreturnFALSE}9程序下载与调试1、把程序下载到试验箱中(1)执行菜单Project|Make对工程进行编译连接。在出现的错误/警告窗口中选择某错误/警告信息,ADS会自动打开相应源文件并用箭头指向出错的文本行。如果某个源文件被修改,重新编译时ADS会自动同步各文件的日期信息。(2)在ADS中执行菜单Project|Debug启动ADS1.2的调试工具AXD。(3)在AXD中执行菜单Options|ConfigureTarget对AXD进行设置。选择ADP即远程调试,点Configure按钮进一步设置具体参数。(4)点Select按钮选择远程连接为ARMethernetdriver,点Configure按钮输入仿真器的IP地址。如果用户使用的是并行口仿真器,请输入127.0.0.1即可。(5)等待程序装载完毕以后,通过Execute|Go菜单以及Execute|Stop(或者工具栏中的相应按钮)运行或暂停程序。程序暂停后在窗口中将显示出程序暂停的位置。(6)通过Execute|Step菜单(或者工具栏中的相应按钮)可以单步运行程序。也可以使用StepIn、StepOut菜单命令进入或者跳出函数的调用。RunToCursor命令运行到光标位置。(7)程序停止后可以通过ProcessorViews|Sources菜单查看源文件,并可在适当位置按F9设置端点。(8)使用在ProcessorView菜单下的Registers、Variables和Memory命令可以查看工作寄存器或者内存变量。读者可以逐一地尝试,为以后调试程序打下基础。注意在进行调试时在ADS中必须选择当前工程的Debug版本,如果选择Release版本则无法正常调试程序。但在调试通过后就必须选择Release版本进行编译连接并将生产的system.bin文件复制到开发板的Flash中。将开发板上的Flash激活并使Windows认其为一个2、运行结果与不足本程序能够完成设计目的的所有基本要求(1)能够通过方向键来控制蛇的移动方向(2)蛇吃到食物后能够重新出现食物并且能够更新和显示分数(3)每吃到5个食物后,游戏能够自动进入下一关,并能通过增加蛇的移动速度来增加游戏的难度(4)能够通过按键随便退出游戏,并能通过按键重新进入游戏未能实现的功能本程序设计时预想在游戏开始前能够停留在游戏界别设置画面,并能通过手动进行游戏级别的调整,按键用来增加游戏级别,按键用来减少游戏级别,并能在屏幕上显示游戏灌输,等到有确认信息,游戏才开始。但是此部功能没有实现,实验的时候程序能够进入级别调整画面,并等待用户对游戏等级进行调整,但是、按键和确认按键无效,没办法对游戏级别进行调整。由于调试时间有限,最后删掉次部分功能。不足之处(1)方向按键按下后,要有一定的延迟蛇才能对按键作出反应,这个延迟不是很明显,但是刚开始游戏的时候,总感觉不能刚好控制蛇吃到食物,需要稍微提早一些时间按下按键才能让蛇延目标方向移动。这个不足的原理是因为每次按键按下,要等到下一次循环,蛇才能响应方向改变,而蛇

注意事项

本文(基于μC_OS系统ARM9硬件平台的贪吃蛇C语言游戏设计.doc)为本站会员(21ask)主动上传,人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知人人文库网([email protected]),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。

copyright@ 2015-2017 人人文库网网站版权所有
苏ICP备12009002号-5