ImageVerifierCode 换一换
格式:DOC , 页数:9 ,大小:58.50KB ,
资源ID:2254354      下载积分:20 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-2254354.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(天津大学自动化2010级《嵌入式系统》设计报告.doc)为本站会员(dzzj200808)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

天津大学自动化2010级《嵌入式系统》设计报告.doc

1、嵌入式系统设计报告学院:电气与自动化工程学院班级:自动化 2 班年级:2010 级学号:3010203109姓名:叶林奇一、 作品名称:贪吃蛇游戏二、 设计思路贪吃蛇由一节一节的方块组成,初始长度为 3,按下启动按钮(1键) ,贪吃蛇前进。玩家通过方向键(2 上4左5下6右)控制贪吃蛇的转弯。按下暂停键(1 ) ,游戏暂停,再次按下暂停键继续游戏。游戏过程中若贪吃蛇撞到边界或自己,则游戏失败。贪吃蛇每吃一个食物,节数加 1。玩家如果成功将节数增加到 20,则获得胜利。胜利后播放音乐,按下重启键(3 )重新开始。流程图:游戏开始启动键按下?屏幕中央显示三节贪吃蛇和食物YES贪吃蛇前进方向键按下?

2、YES转弯NONO撞墙或自己?贪吃蛇节数加 1,生成新食物YESYES节数达到20?NO获胜,播放音乐吃到食物?NO游戏失败重启键按下?YESNO三、 主要代码:char stop=0,restart=0,win1=0;/* 标志位,stop:暂停键按下置 1;restart:重启键按下 1;win1: 获胜置 1 */char length; /* 贪吃蛇长度 */char snake202=0;/* 贪吃蛇各节位置坐标;snake0为头部;snakei0:x 坐标(039);snakei1:y 坐标(029) */void Refresh_Snake() /* 刷新贪吃蛇所有节 */uns

3、igned char i;for(i=0;isnake11)i=0;else i=1;elseif(snake00snake10)i=3;else i=2;return i;void Refresh(char p2) /* 显示一个节(8*8 的方块) */MX1_LCDC_DrawSquare(p0*8 , p1*8, 8, 29, 50, LS_SOLID, FS_SOLID );void Clear(char p2) /* 清除一个节(8*8 的方块) */MX1_LCDC_DrawSquare(p0*8 , p1*8, 8, 15, 15, LS_SOLID, FS_SOLID );v

4、oid Move(char n)/* 贪吃蛇移动子函数,n 为 01234 分别代表前进、左转、右转、上转、下转 */char k,i,v=Get_direction();Clear(snakelength-1); /* 清除尾巴 */for(i=length-1;i=1;i-)snakei0=snakei-10;snakei1=snakei-11; /* 从最后一节开始,每一节(除头部)移到前一节的位置 */if(n=0) /* 前进 */ switch(v) /* 根据前进方向确定头部应处位置 */case 0:if(snake01=29)Restart();else snake01+;b

5、reak; /* 向下时头部向下移一格 */case 1:if(snake01=0)Restart();else snake01-;break; /* 向上时头部向上移一格 */case 2:if(snake00=0)Restart();else snake00-;break; /* 向左时头部向左移一格 */ case 3:if(snake00=39)Restart();else snake00+;break; /* 向右时头部向右移一格 */default:break;if(n=1) /* 左转 */if(snake00=0)snake00+;else snake00-;if(n=2) /

6、* 右转 */if(snake00=39)snake00-;else snake00+;if(n=3) /* 下转 */if(snake01=29)snake01-;else snake01+;if(n=4) /* 上转 */if(snake01=0)snake01+;else snake01-;if(snake00=food0 /* 吃到食物长度加 1 */if(length=20)win(); /* 长度为 20 时获胜 */else Generate_food(); /* 长度没到 20 则生成新的食物 */for(k=1;klength;k+) /* 判断是否撞到自己,是则失败,游戏重

7、启 */if(snake00=snakek0 Refresh(snake0); /* 刷新头部位置 */void Go_ahead() /* 前进子程序 */Move(0);void Turn_left() /* 左转子程序 */Move(1);void Turn_right() /* 右转子程序 */Move(2);void Turn_up() /* 上转子程序 */Move(4);void Turn_down() /* 下转子程序 */Move(3);void YourTask( void *pdata ) /* 此函数定义了一个任务 */Init();IRQ_Register( OSTi

8、ckISR, TIMER1_INT );/* 开启 uC/OS-II 的时钟中断( 必须在第一个运行的任务里进行) */OSStartTimeTick();KEY_Init();WAVE_Init( WAVE_BASE_DEFAULT ); /* 音乐初始化*/* 在下面添加任务内容 */while( 1 )if(stop=0/* 主程序:前进*/OSTimeDlyHMSM( 0, 0,0 , 100 );/* 初始化后,从这里开始执行 C 代码 */int _main( void )unsigned int paletteLCDC_CMRAM_SIZE;int i;MX1_AITC_Init

9、(); /* 初始化中断控制器 */IRQ_Init(); /* 初始化中断管理 */MX1_GPIO_Init( MX1_GPIO_PC );MX1_SSI_Init( MX1_SSI1 );OSInit(); /* 初始化 uC/OS-II 内核数据结构 */初始化 LCDMX1_LCDC_Init(LCDC_PANEL_WIDTH, LCDC_PANEL_HEIGHT, LCDC_INIT_STARTX, LCDC_INIT_STARTY, LCDC_VPW, LCDC_PANEL_CONF, LCDC_BPP );/ 初始化调色板for( i=0; i16; i+ )palettei

10、= RGB( i, 0, 0 );palettei+16 = RGB( 0, i, 0 );palettei+32 = RGB( 0, 0, i );palettei+48 = RGB( i, i, i );MX1_LCDC_CMRAM_Set( palette );/* 建立一个任务 */OSTaskCreate( YourTask, 0, OSStart(); /* 开始调度 */return 0;/* 键盘控制程序 */void KEY_Scan_PC()/*此处省略键盘扫描程序段*/scan_done:switch(key_val) /* 判断按键值 */case 2:if(stop=

11、0 /* 2键上转 */break;case 5:if(stop=0 /* 5键下转 */break;case 4:if(stop=0 /* 4键左转 */break;case 6:if(stop=0 /* 6键右转 */break;case 1:if(stop=0)stop=1;else stop=0; /* 1键暂停 */break;case 3:if(win1=1)restart=1; /* 获胜后3键重启 */break;ret:delay( 60000 ); /* 按键延时 */IMR_UMASK( KEY_COL1_PORT, KEY_COL1_PIN );IMR_UMASK( KEY_COL2_PORT, KEY_COL2_PIN );IMR_UMASK( KEY_COL3_PORT, KEY_COL3_PIN );IMR_UMASK( KEY_COL4_PORT, KEY_COL4_PIN );四、 心得体会:编程要从模仿开始,先看别人写好的程序,熟悉软件操作,掌握基本的编程流程。有了以上基础再开始构思自己要实现的功能,在现成的程序上进行增删改,一步一步调试,最终能使自己的想法得以实现,也就完成了一次再创造的过程。

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报