嵌入式系统课程设计报告——贪吃蛇_计算机-嵌入式开发.pdf

上传人:c****3 文档编号:93974129 上传时间:2023-07-20 格式:PDF 页数:25 大小:480.16KB
返回 下载 相关 举报
嵌入式系统课程设计报告——贪吃蛇_计算机-嵌入式开发.pdf_第1页
第1页 / 共25页
嵌入式系统课程设计报告——贪吃蛇_计算机-嵌入式开发.pdf_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《嵌入式系统课程设计报告——贪吃蛇_计算机-嵌入式开发.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

26、ction);if(snake.life=1)/蛇是否死了 GameOver();/本次游戏完毕 OSTimeDly(50000);if(gamespeed=0)/易 for(k=0;k10000000;k+);else if(gamespeed=1)/中 for(k=0;k1000000;k+);else if(gamespeed=2)/难 项信息食物的横坐标食物的纵坐标判断是否要出现食物的变量食物的构造体记录前一个方向分数时间关卡难度速度标记键设置游戏项表示关卡表示难度第几个食物绘制游戏界面产生食物完毕游戏新游戏输出新得分显示倒计时画障碍 节蛇节数恭喜你进入下一关是否进入游戏设置吃到食物以

27、后用白色去除蛇的的最后一节蛇的身体长一节画面上需要出现新的食物输出新得分蛇的每个环节往前画出蛇画食物设置食物颜色红色画食物为红色的圆蛇的方向是否撞到自己 蛇的的最后一节函数名称函数说明任务向串口发送数据输入参数输出参数无任务的干得活儿就是向超级终端发送内容延时个节拍来在任务里创立另一个任务在任务里创立另一个任务翻开时钟节拍让操作系统跑起在任务里创立另一个-word.zl-for(k=0;k100000;k+);else for(k=0;k10000000;k+);Set_Color(GUI_WHITE);/用灰色去除蛇的的最后一节 Fill_Rect(x,y,x+20,y+20);OSTime

28、Dly(10);/*-函数名称:Task_3-函数说明:任务 3,向串口发送数据-输入参数:pdata-输出参数:无*/void Task_3(void*pdata)for(;)if(key_number!=0 xff)Uart_Printf(key_number=%xn,key_number);/任务的干得活儿就是向超级终端发送内容 key_number=0 xff;OSTimeDly(30);/延时100 个节拍/OSTimeDly(100);项信息食物的横坐标食物的纵坐标判断是否要出现食物的变量食物的构造体记录前一个方向分数时间关卡难度速度标记键设置游戏项表示关卡表示难度第几个食物绘制游

29、戏界面产生食物完毕游戏新游戏输出新得分显示倒计时画障碍 节蛇节数恭喜你进入下一关是否进入游戏设置吃到食物以后用白色去除蛇的的最后一节蛇的身体长一节画面上需要出现新的食物输出新得分蛇的每个环节往前画出蛇画食物设置食物颜色红色画食物为红色的圆蛇的方向是否撞到自己 蛇的的最后一节函数名称函数说明任务向串口发送数据输入参数输出参数无任务的干得活儿就是向超级终端发送内容延时个节拍来在任务里创立另一个任务在任务里创立另一个任务翻开时钟节拍让操作系统跑起在任务里创立另一个-word.zl-void Task_1(void*pdata)INT8U err;INT8U*Key_P;INT8U Key_Val;i

30、nt ys=0;char cmapSelect2;Timer1_Init();/翻开时钟节拍,让操作系统跑起来/OSTaskCreate(Task_2,(void*)0,(OS_STK*)&Stack_Task_2(STACKSIZE)-1,9);/在任务里创立另一个任务/OSTaskCreate(Task_3,(void*)0,(OS_STK*)&Stack_Task_3(STACKSIZE)-1,8);/在任务里创立另一个任务/在任务里创立另一个任务 for(;)Key_P=OSMboxPend(Key_Mbox,0,&err);/等待任务间的通信邮箱内的键值指针 Key_Val=*Key

31、_P;switch(Key_Val)/int temp_mapSelect=0;/设置时,选择的关卡/int temp_gamespeed=0;/设置时,选择的难度 case 0 x05:/GUI_StoreKey(GUI_KEY_UP);if(key_F=1)if(setUnit=0)/选择关卡 mapSelect=1;/mapSelect+;/if(mapSelect=3)/mapSelect=2;else if(setUnit=1)/选择难易程度 gamespeed=1;/gamespeed+;/if(gamespeed=3)/gamespeed=2;项信息食物的横坐标食物的纵坐标判断是

32、否要出现食物的变量食物的构造体记录前一个方向分数时间关卡难度速度标记键设置游戏项表示关卡表示难度第几个食物绘制游戏界面产生食物完毕游戏新游戏输出新得分显示倒计时画障碍 节蛇节数恭喜你进入下一关是否进入游戏设置吃到食物以后用白色去除蛇的的最后一节蛇的身体长一节画面上需要出现新的食物输出新得分蛇的每个环节往前画出蛇画食物设置食物颜色红色画食物为红色的圆蛇的方向是否撞到自己 蛇的的最后一节函数名称函数说明任务向串口发送数据输入参数输出参数无任务的干得活儿就是向超级终端发送内容延时个节拍来在任务里创立另一个任务在任务里创立另一个任务翻开时钟节拍让操作系统跑起在任务里创立另一个-word.zl-Draw

33、SetForm();break;case 0 x06:/上/GUI_StoreKey(GUI_KEY_UP);if(key_F=1)setUnit=0;DrawSetForm();snake.direction=UP;break;case 0 x04:/下/GUI_StoreKey(GUI_KEY_DOWN);if(key_F=1)setUnit=1;DrawSetForm();snake.direction=DOWN;break;case 0 x01:/右/GUI_StoreKey(GUI_KEY_RIGHT);if(key_F=1)if(setUnit=0)mapSelect=2;/map

34、Select+;/if(mapSelect=3)/mapSelect=2;else if(setUnit=1)gamespeed=2;/gamespeed+;/if(gamespeed=3)/gamespeed=2;DrawSetForm();项信息食物的横坐标食物的纵坐标判断是否要出现食物的变量食物的构造体记录前一个方向分数时间关卡难度速度标记键设置游戏项表示关卡表示难度第几个食物绘制游戏界面产生食物完毕游戏新游戏输出新得分显示倒计时画障碍 节蛇节数恭喜你进入下一关是否进入游戏设置吃到食物以后用白色去除蛇的的最后一节蛇的身体长一节画面上需要出现新的食物输出新得分蛇的每个环节往前画出蛇画食物设

35、置食物颜色红色画食物为红色的圆蛇的方向是否撞到自己 蛇的的最后一节函数名称函数说明任务向串口发送数据输入参数输出参数无任务的干得活儿就是向超级终端发送内容延时个节拍来在任务里创立另一个任务在任务里创立另一个任务翻开时钟节拍让操作系统跑起在任务里创立另一个-word.zl-snake.direction=RIGHT;break;case 0 x09:/左/GUI_StoreKey(GUI_KEY_LEFT);if(key_F=1)if(setUnit=0)mapSelect=0;/mapSelect-;/if(mapSelect=-1)/mapSelect=0;else if(setUnit=1

36、)gamespeed=0;/gamespeed-;/if(gamespeed=-1)/gamespeed=0;DrawSetForm();snake.direction=LEFT;break;case 0 x0F:/进入菜单 if(key_F=0)key_F=1;Set_SelectFace();DrawSetForm();Uart_Printf(key_F=%dn,key_F);break;case 0 x0B:/进入游戏界面 if(key_F=1)key_F=0;项信息食物的横坐标食物的纵坐标判断是否要出现食物的变量食物的构造体记录前一个方向分数时间关卡难度速度标记键设置游戏项表示关卡表示

37、难度第几个食物绘制游戏界面产生食物完毕游戏新游戏输出新得分显示倒计时画障碍 节蛇节数恭喜你进入下一关是否进入游戏设置吃到食物以后用白色去除蛇的的最后一节蛇的身体长一节画面上需要出现新的食物输出新得分蛇的每个环节往前画出蛇画食物设置食物颜色红色画食物为红色的圆蛇的方向是否撞到自己 蛇的的最后一节函数名称函数说明任务向串口发送数据输入参数输出参数无任务的干得活儿就是向超级终端发送内容延时个节拍来在任务里创立另一个任务在任务里创立另一个任务翻开时钟节拍让操作系统跑起在任务里创立另一个-word.zl-score=0;gametime=99;NewGame();OSTimeDlyResume(8);e

38、lse Draw_GUI();/游戏界面初始化 PrScore();/初始化分数 DspTime(99);/初始化倒计时 DrawMap();OSTaskCreate(Task_2,(void*)0,(OS_STK*)&Stack_Task_2(STACKSIZE)-1,4);OSTaskCreate(Task_4,(void*)0,(OS_STK*)&Stack_Task_4(STACKSIZE*3)-1,8);/创立任务 4 break;/*case 0 x0E:/重新开场游戏 score=0;gametime=99;NewGame();break;*/case 0 x00:GUI_Sto

39、reKey(GUI_KEY_ENTER);break;default:break;OSTimeDly(1);void Task_2(void*pdata)/记时 INT8U hours=0;项信息食物的横坐标食物的纵坐标判断是否要出现食物的变量食物的构造体记录前一个方向分数时间关卡难度速度标记键设置游戏项表示关卡表示难度第几个食物绘制游戏界面产生食物完毕游戏新游戏输出新得分显示倒计时画障碍 节蛇节数恭喜你进入下一关是否进入游戏设置吃到食物以后用白色去除蛇的的最后一节蛇的身体长一节画面上需要出现新的食物输出新得分蛇的每个环节往前画出蛇画食物设置食物颜色红色画食物为红色的圆蛇的方向是否撞到自己 蛇

40、的的最后一节函数名称函数说明任务向串口发送数据输入参数输出参数无任务的干得活儿就是向超级终端发送内容延时个节拍来在任务里创立另一个任务在任务里创立另一个任务翻开时钟节拍让操作系统跑起在任务里创立另一个-word.zl-INT8U minutes=0;INT8U seconds=1;INT16U milli=0;while(1)OSTimeDly(300);if(snake.life=0)gametime-;DspTime(gametime);PrScore();void Draw_GUI()/绘制游戏界面 int i=0;int j=0;Set_Color(GUI_WHITE);/游戏背景白

41、Fill_Rect(20,20,640,480);Set_Color(GUI_BLACK);/设置墙黑色 Set_Font(&CHINESE_FONT16);Fill_Rect(0,0,20,640);/左墙 Fill_Rect(0,0,640,20);/上墙 Fill_Rect(0,460,640,480);/下墙 Fill_Rect(460,0,480,480);/右墙 项信息食物的横坐标食物的纵坐标判断是否要出现食物的变量食物的构造体记录前一个方向分数时间关卡难度速度标记键设置游戏项表示关卡表示难度第几个食物绘制游戏界面产生食物完毕游戏新游戏输出新得分显示倒计时画障碍 节蛇节数恭喜你进入

42、下一关是否进入游戏设置吃到食物以后用白色去除蛇的的最后一节蛇的身体长一节画面上需要出现新的食物输出新得分蛇的每个环节往前画出蛇画食物设置食物颜色红色画食物为红色的圆蛇的方向是否撞到自己 蛇的的最后一节函数名称函数说明任务向串口发送数据输入参数输出参数无任务的干得活儿就是向超级终端发送内容延时个节拍来在任务里创立另一个任务在任务里创立另一个任务翻开时钟节拍让操作系统跑起在任务里创立另一个-word.zl-Set_Color(GUI_BLUE);/右边显示栏蓝色 Fill_Rect(480,20,620,460);Set_Color(GUI_BLACK);/设置墙黑色 Fill_Rect(620,

43、0,640,480);/右边框 Set_BkColor(GUI_BLUE);Set_Color(GUI_WHITE);Disp_String(CN_start 关卡:CN_end,500,60);Disp_String(CN_start 难易程度:CN_end,500,110);Disp_String(CN_start 分数:CN_end,500,250);Disp_String(CN_start 倒计时:CN_end,500,360);void Random_Food()srand(mySrand+);food.x=rand()%22;srand(mySrand+3);food.y=rand

44、()%22;food.yes=1;switch(mapSelect)case 0:Uart_Printf(*case 0*foodIndex=%d n,foodIndex);break;case 1:Uart_Printf(*case 1*map_1food.xfood.y=%d n,map_1food.xfood.y);if(map_1food.yfood.x=1)Uart_Printf(*1111*foodIndex=%d n,foodIndex);项信息食物的横坐标食物的纵坐标判断是否要出现食物的变量食物的构造体记录前一个方向分数时间关卡难度速度标记键设置游戏项表示关卡表示难度第几个食物

45、绘制游戏界面产生食物完毕游戏新游戏输出新得分显示倒计时画障碍 节蛇节数恭喜你进入下一关是否进入游戏设置吃到食物以后用白色去除蛇的的最后一节蛇的身体长一节画面上需要出现新的食物输出新得分蛇的每个环节往前画出蛇画食物设置食物颜色红色画食物为红色的圆蛇的方向是否撞到自己 蛇的的最后一节函数名称函数说明任务向串口发送数据输入参数输出参数无任务的干得活儿就是向超级终端发送内容延时个节拍来在任务里创立另一个任务在任务里创立另一个任务翻开时钟节拍让操作系统跑起在任务里创立另一个-word.zl-Random_Food();Uart_Printf(*2222*foodIndex=%d n,foodIndex)

46、;break;case 2:if(map_2food.yfood.x=1)Random_Food();Uart_Printf(*case 2*foodIndex=%d n,foodIndex);break;default:break;Uart_Printf(*FOOD*food.x=%d n,food.x);Uart_Printf(*FOOD*food.y=%d n,food.y);void GameOver()/游戏完毕 Set_Font(&CHINESE_FONT16);Disp_String(CN_start 游戏完毕!CN_end,240,240);void PrScore()/显示分

47、数 INT8U bw;INT8U sw;INT8U gw;char cscore 4;int b;int s;int g;Set_Color(GUI_BLUE);/蓝色 Fill_Rect(520,280,540,320);项信息食物的横坐标食物的纵坐标判断是否要出现食物的变量食物的构造体记录前一个方向分数时间关卡难度速度标记键设置游戏项表示关卡表示难度第几个食物绘制游戏界面产生食物完毕游戏新游戏输出新得分显示倒计时画障碍 节蛇节数恭喜你进入下一关是否进入游戏设置吃到食物以后用白色去除蛇的的最后一节蛇的身体长一节画面上需要出现新的食物输出新得分蛇的每个环节往前画出蛇画食物设置食物颜色红色画食物

48、为红色的圆蛇的方向是否撞到自己 蛇的的最后一节函数名称函数说明任务向串口发送数据输入参数输出参数无任务的干得活儿就是向超级终端发送内容延时个节拍来在任务里创立另一个任务在任务里创立另一个任务翻开时钟节拍让操作系统跑起在任务里创立另一个-word.zl-Uart_Printf(*score=%d n,score);bw=score/100;sw=score%100/10;gw=score%10;b=score/100;s=score%100/10;g=score%10;cscore0=b+48;cscore1=s+48;cscore2=g+48;cscore3=0;Set_Color(GUI_R

49、ED);/红色 Set_Font(&GUI_Font8x16);Disp_String(cscore,520,280);write7279(decode1+2,bw&0 x0f);/左边数码管 write7279(decode1+1,sw&0 x0f);write7279(decode1,gw&0 x0f);void DspTime(INT32U time)/显示倒计时 INT8U a;INT8U b;int atime;int btime;char ctime3;a=gametime/10;b=gametime%10;atime=gametime/10;btime=gametime%10;c

50、time0=atime+48;ctime1=btime+48;ctime2=0;Set_Color(GUI_BLUE);/蓝色 项信息食物的横坐标食物的纵坐标判断是否要出现食物的变量食物的构造体记录前一个方向分数时间关卡难度速度标记键设置游戏项表示关卡表示难度第几个食物绘制游戏界面产生食物完毕游戏新游戏输出新得分显示倒计时画障碍 节蛇节数恭喜你进入下一关是否进入游戏设置吃到食物以后用白色去除蛇的的最后一节蛇的身体长一节画面上需要出现新的食物输出新得分蛇的每个环节往前画出蛇画食物设置食物颜色红色画食物为红色的圆蛇的方向是否撞到自己 蛇的的最后一节函数名称函数说明任务向串口发送数据输入参数输出参数

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com