嵌入式系统课程设计报告——贪吃蛇_计算机-嵌入式开发.pdf
《嵌入式系统课程设计报告——贪吃蛇_计算机-嵌入式开发.pdf》由会员分享,可在线阅读,更多相关《嵌入式系统课程设计报告——贪吃蛇_计算机-嵌入式开发.pdf(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-word.zl-/*;*-;*-;*文件作者:ARM 开发小组;*创立日期:2004/06/25;*版本声明:v1.0.0;*-;*-;*;*/#include.incconfig.h#include#include#include#define STACKSIZE 256 OS_STK_DATA stk;extern GUI_FONT CHINESE_FONT12;extern GUI_FONT CHINESE_FONT16;extern GUI_FONT GUI_Font8x16;OS_EVENT*Key_Mbox;/*分配各任务的堆栈容量*/OS_STK Stack_Task_1STA
2、CKSIZE;OS_STK Stack_Task_2STACKSIZE;OS_STK Stack_Task_3STACKSIZE;OS_STK Stack_Task_4STACKSIZE*3;/*/-word.zl-#define MAX_X 200/蛇的最大长度#define MAX_Y 200#define UP 1/蛇的方向#define DOWN 2#define LEFT 3#define RIGHT 4#define ROW 22/表格行数#define COLUMN 22/表格列数/定义蛇的各项信息 struct Snake S32 xMAX_X;S32 yMAX_Y;S32 l
3、ength;S32 direction;S32 life;snake;struct Food int x;/*食物的横坐标*/int y;/*食物的纵坐标*/int yes;/*判断是否要出现食物的变量*/food;/*食物的构造体*/S16 map_12222=/0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,/0 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,/1 0,0,1,1,1,1,1,0,0
4、,0,0,0,0,0,0,0,1,1,1,1,1,0,/2 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,/3 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,/4 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,/5 项信息食物的横坐标食物的纵坐标判断是否要出现食物的变量食物的构造体记录前一个方向分数时间关卡难度速度标记键设置游戏项表示关卡表示难度第几个食物绘制游戏界面产生食物完毕游戏新游戏输出新得分显示倒计时画障碍 节蛇节数恭喜你进入下一关是否进入游戏设置吃到食物以后用
5、白色去除蛇的的最后一节蛇的身体长一节画面上需要出现新的食物输出新得分蛇的每个环节往前画出蛇画食物设置食物颜色红色画食物为红色的圆蛇的方向是否撞到自己 蛇的的最后一节函数名称函数说明任务向串口发送数据输入参数输出参数无任务的干得活儿就是向超级终端发送内容延时个节拍来在任务里创立另一个任务在任务里创立另一个任务翻开时钟节拍让操作系统跑起在任务里创立另一个-word.zl-0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,/6 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,/7 0,0,0,0,0,0,0,0,0,0,0
6、,0,0,0,0,0,0,0,0,0,0,0,/8 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,/9 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,/10 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,/11 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,/12 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,/13 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
7、,0,0,0,0,/14 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,/15 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,/16 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,/17 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,/18 0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,/19 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,/20
8、 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/21;S16 map_22222=/0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,/0 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,/1 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,/2 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
9、0,1,/3 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,项信息食物的横坐标食物的纵坐标判断是否要出现食物的变量食物的构造体记录前一个方向分数时间关卡难度速度标记键设置游戏项表示关卡表示难度第几个食物绘制游戏界面产生食物完毕游戏新游戏输出新得分显示倒计时画障碍 节蛇节数恭喜你进入下一关是否进入游戏设置吃到食物以后用白色去除蛇的的最后一节蛇的身体长一节画面上需要出现新的食物输出新得分蛇的每个环节往前画出蛇画食物设置食物颜色红色画食物为红色的圆蛇的方向是否撞到自己 蛇的的最后一节函数名称函数说明任务向串口发送数据输入参数输出参数无任务的干得活儿就是向超级终端
10、发送内容延时个节拍来在任务里创立另一个任务在任务里创立另一个任务翻开时钟节拍让操作系统跑起在任务里创立另一个-word.zl-1,/4 1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,/5 1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,/6 1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,/7 1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,/8 1,0,0,0,0,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,0,1,
11、/9 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,/10 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,/11 1,0,0,0,0,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,0,1,/12 1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,/13 1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,/14 1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,/15 1,0,0,0,0
12、,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,/16 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,/17 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,/18 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,/19 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,/20 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1/21;int oldDire=4;/记录前一个方向
13、 int score=0;/分数 int gametime=99;/时间 int mapSelect=0;/关卡 int gamespeed=0;/难度,速度 int key_F=0;/标记 F 键 int setUnit=0;/设置游戏项,0 表示关卡,1 表示难度 int foodIndex=0;/第几个食物 项信息食物的横坐标食物的纵坐标判断是否要出现食物的变量食物的构造体记录前一个方向分数时间关卡难度速度标记键设置游戏项表示关卡表示难度第几个食物绘制游戏界面产生食物完毕游戏新游戏输出新得分显示倒计时画障碍 节蛇节数恭喜你进入下一关是否进入游戏设置吃到食物以后用白色去除蛇的的最后一节蛇的
14、身体长一节画面上需要出现新的食物输出新得分蛇的每个环节往前画出蛇画食物设置食物颜色红色画食物为红色的圆蛇的方向是否撞到自己 蛇的的最后一节函数名称函数说明任务向串口发送数据输入参数输出参数无任务的干得活儿就是向超级终端发送内容延时个节拍来在任务里创立另一个任务在任务里创立另一个任务翻开时钟节拍让操作系统跑起在任务里创立另一个-word.zl-int mySrand=0;void Draw_GUI();/绘制游戏界面 void Random_Food();/产生食物 void GameOver();/完毕游戏 void NewGame();/新游戏 void PrScore();/输出新得分 v
15、oid DspTime(INT32U);/显示倒计时 void DrawMap();/画障碍物 void CheckMap();/判断蛇是否撞到障碍物 void Set_SelectFace();/游戏设置 void DrawSetForm();/游戏设置键 void Task_2();/*-函数名称:Task_4(void*pdata)-函数说明:GUI 任务,优先级为 56-输入参数:pdata-输出参数:无*/void Task_4(void*pdata)I32 k=0;int i=0;int j=0;int x=0;int y=0;snake.life=0;/活着 snake.x0=1
16、00;snake.y0=40;/蛇头 snake.x1=80;snake.y1=40;/第一节蛇 snake.x2=60;snake.y2=40;snake.length=3;/节数 snake.direction=RIGHT;food.yes=0;while(1)if(score=100)项信息食物的横坐标食物的纵坐标判断是否要出现食物的变量食物的构造体记录前一个方向分数时间关卡难度速度标记键设置游戏项表示关卡表示难度第几个食物绘制游戏界面产生食物完毕游戏新游戏输出新得分显示倒计时画障碍 节蛇节数恭喜你进入下一关是否进入游戏设置吃到食物以后用白色去除蛇的的最后一节蛇的身体长一节画面上需要出现
17、新的食物输出新得分蛇的每个环节往前画出蛇画食物设置食物颜色红色画食物为红色的圆蛇的方向是否撞到自己 蛇的的最后一节函数名称函数说明任务向串口发送数据输入参数输出参数无任务的干得活儿就是向超级终端发送内容延时个节拍来在任务里创立另一个任务在任务里创立另一个任务翻开时钟节拍让操作系统跑起在任务里创立另一个-word.zl-score=0;mapSelect+;Set_Color(GUI_GREEN);Set_Font(&CHINESE_FONT16);Disp_String(CN_start 恭喜你,进入下一关!CN_end,240,240);OSTimeDly(200);NewGame();if
18、(key_F=1)/是否进入游戏设置/OSTimeDly(100);OSTimeDly(50000);if(snake.x0=(food.x*20)+20&snake.y0=(food.y*20)+20)/*吃到食物以后*/Set_Color(GUI_WHITE);/用白色去除蛇的的最后一节 Fill_Rect(food.x*20)+20,(food.y*20)+20,(food.x*20)+40,(food.y*20)+40);snake.length+;/蛇的身体长一节 food.yes=0;/画面上需要出现新的食物 score+=10;PrScore();/输出新得分 x=snake.x
19、snake.length-1;y=snake.ysnake.length-1;for(i=snake.length-1;i0;i-)/蛇的每个环节往前!snake.xi=snake.xi-1;snake.yi=snake.yi-1;Set_Color(GUI_GREEN);/画出蛇 for(j=0;jsnake.length;j+)Fill_Rect(snake.xj,snake.yj,snake.xj+20,snake.yj+20);项信息食物的横坐标食物的纵坐标判断是否要出现食物的变量食物的构造体记录前一个方向分数时间关卡难度速度标记键设置游戏项表示关卡表示难度第几个食物绘制游戏界面产生食
20、物完毕游戏新游戏输出新得分显示倒计时画障碍 节蛇节数恭喜你进入下一关是否进入游戏设置吃到食物以后用白色去除蛇的的最后一节蛇的身体长一节画面上需要出现新的食物输出新得分蛇的每个环节往前画出蛇画食物设置食物颜色红色画食物为红色的圆蛇的方向是否撞到自己 蛇的的最后一节函数名称函数说明任务向串口发送数据输入参数输出参数无任务的干得活儿就是向超级终端发送内容延时个节拍来在任务里创立另一个任务在任务里创立另一个任务翻开时钟节拍让操作系统跑起在任务里创立另一个-word.zl-if(food.yes=0)/画食物 Random_Food();Uart_Printf(random x=%xn,food.x);
21、Uart_Printf(random y=%xn,food.y);Set_Color(GUI_RED);/设置食物颜色红色 Fill_Circle(food.x*20)+30,(food.y*20)+30,10);/画食物,为红色的圆 switch(snake.direction)/蛇的方向 case UP:if(oldDire!=DOWN)snake.y0-=20;oldDire=snake.direction;else snake.y0+=20;break;case DOWN:if(oldDire!=UP)snake.y0+=20;oldDire=snake.direction;else
22、snake.y0-=20;break;case LEFT:if(oldDire!=RIGHT)项信息食物的横坐标食物的纵坐标判断是否要出现食物的变量食物的构造体记录前一个方向分数时间关卡难度速度标记键设置游戏项表示关卡表示难度第几个食物绘制游戏界面产生食物完毕游戏新游戏输出新得分显示倒计时画障碍 节蛇节数恭喜你进入下一关是否进入游戏设置吃到食物以后用白色去除蛇的的最后一节蛇的身体长一节画面上需要出现新的食物输出新得分蛇的每个环节往前画出蛇画食物设置食物颜色红色画食物为红色的圆蛇的方向是否撞到自己 蛇的的最后一节函数名称函数说明任务向串口发送数据输入参数输出参数无任务的干得活儿就是向超级终端发送
23、内容延时个节拍来在任务里创立另一个任务在任务里创立另一个任务翻开时钟节拍让操作系统跑起在任务里创立另一个-word.zl-snake.x0-=20;oldDire=snake.direction;else snake.x0+=20;break;case RIGHT:if(oldDire!=LEFT)snake.x0+=20;oldDire=snake.direction;else snake.x0-=20;break;default:break;Uart_Printf(snake.x0=%d*snake.y0=%dn,snake.x0,snake.y0);for(i=3;isnake.leng
24、th;i+)/是否撞到自己了,因为蛇头为两节,第三节不可能拐过来 if(snake.xi=snake.x0&snake.yi=snake.y0)snake.life=1;break;CheckMap();/判断蛇死亡条件 项信息食物的横坐标食物的纵坐标判断是否要出现食物的变量食物的构造体记录前一个方向分数时间关卡难度速度标记键设置游戏项表示关卡表示难度第几个食物绘制游戏界面产生食物完毕游戏新游戏输出新得分显示倒计时画障碍 节蛇节数恭喜你进入下一关是否进入游戏设置吃到食物以后用白色去除蛇的的最后一节蛇的身体长一节画面上需要出现新的食物输出新得分蛇的每个环节往前画出蛇画食物设置食物颜色红色画食物为
25、红色的圆蛇的方向是否撞到自己 蛇的的最后一节函数名称函数说明任务向串口发送数据输入参数输出参数无任务的干得活儿就是向超级终端发送内容延时个节拍来在任务里创立另一个任务在任务里创立另一个任务翻开时钟节拍让操作系统跑起在任务里创立另一个-word.zl-if(snake.x0 440)snake.x0=20;else if(snake.y0 440)snake.y0=20;else if(snake.y0 20)snake.y0=440;if(gametime snake.life=%dn,snake.life);Uart_Printf(snake.direction=%dn,snake.dire
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 课程设计 报告 贪吃 计算机 开发
限制150内