嵌入式系统课程设计贪吃蛇.docx

上传人:b****4 文档编号:6179828 上传时间:2023-05-09 格式:DOCX 页数:38 大小:21.65KB
下载 相关 举报
嵌入式系统课程设计贪吃蛇.docx_第1页
第1页 / 共38页
嵌入式系统课程设计贪吃蛇.docx_第2页
第2页 / 共38页
嵌入式系统课程设计贪吃蛇.docx_第3页
第3页 / 共38页
嵌入式系统课程设计贪吃蛇.docx_第4页
第4页 / 共38页
嵌入式系统课程设计贪吃蛇.docx_第5页
第5页 / 共38页
嵌入式系统课程设计贪吃蛇.docx_第6页
第6页 / 共38页
嵌入式系统课程设计贪吃蛇.docx_第7页
第7页 / 共38页
嵌入式系统课程设计贪吃蛇.docx_第8页
第8页 / 共38页
嵌入式系统课程设计贪吃蛇.docx_第9页
第9页 / 共38页
嵌入式系统课程设计贪吃蛇.docx_第10页
第10页 / 共38页
嵌入式系统课程设计贪吃蛇.docx_第11页
第11页 / 共38页
嵌入式系统课程设计贪吃蛇.docx_第12页
第12页 / 共38页
嵌入式系统课程设计贪吃蛇.docx_第13页
第13页 / 共38页
嵌入式系统课程设计贪吃蛇.docx_第14页
第14页 / 共38页
嵌入式系统课程设计贪吃蛇.docx_第15页
第15页 / 共38页
嵌入式系统课程设计贪吃蛇.docx_第16页
第16页 / 共38页
嵌入式系统课程设计贪吃蛇.docx_第17页
第17页 / 共38页
嵌入式系统课程设计贪吃蛇.docx_第18页
第18页 / 共38页
嵌入式系统课程设计贪吃蛇.docx_第19页
第19页 / 共38页
嵌入式系统课程设计贪吃蛇.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

嵌入式系统课程设计贪吃蛇.docx

《嵌入式系统课程设计贪吃蛇.docx》由会员分享,可在线阅读,更多相关《嵌入式系统课程设计贪吃蛇.docx(38页珍藏版)》请在冰点文库上搜索。

嵌入式系统课程设计贪吃蛇.docx

嵌入式系统课程设计贪吃蛇

/**********************************************************************************************************

;*-----------------------------------------------------------------------------------------------------------

;*-----------------------------------------------------------------------------------------------------------

;*文件作者:

ARM开发小组

;*创建日期:

2004/06/25

;*版本声明:

"..\inc\"

#include<>

#include<>

#include<>

#defineSTACKSIZE256

OS_STK_DATAstk;

externGUI_FONTCHINESE_FONT12;

externGUI_FONTCHINESE_FONT16;

externGUI_FONTGUI_Font8x16;

OS_EVENT*Key_Mbox;

/*

*************************************************************************************************************

**分配各任务的堆栈容量**

*************************************************************************************************************

*/

OS_STKStack_Task_1[STACKSIZE];

OS_STKStack_Task_2[STACKSIZE];

OS_STKStack_Task_3[STACKSIZE];

OS_STKStack_Task_4[STACKSIZE*3];

/************************************************************************************************************/

#defineMAX_X200//蛇的最大长度

#defineMAX_Y200

#defineUP1//蛇的方向

#defineDOWN2

#defineLEFT3

#defineRIGHT4

#defineROW22//表格行数

#defineCOLUMN22//表格列数

//定义蛇的各项信息

structSnake

{

S32x[MAX_X];

S32y[MAX_Y];

S32length;

S32direction;

S32life;

}snake;

structFood

{

intx;/*食物的横坐标*/

inty;/*食物的纵坐标*/

intyes;/*判断是否要出现食物的变量*/

}food;/*食物的结构体*/

S16map_1[22][22]={//{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,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

{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,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,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

{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}//21

};

S16map_2[22][22]={//{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,0,1},//3

{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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},//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,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

};

intoldDire=4;//记录前一个方向

intscore=0;//分数

intgametime=99;//时间

intmapSelect=0;//关卡

intgamespeed=0;//难度,速度

intkey_F=0;//标记F键

intsetUnit=0;//设置游戏项,0表示关卡,1表示难度

intfoodIndex=0;//第几个食物

intmySrand=0;

voidDraw_GUI();//绘制游戏界面

voidRandom_Food();//产生食物

voidGameOver();//结束游戏

voidNewGame();//新游戏

voidPrScore();//输出新得分

voidDspTime(INT32U);//显示倒计时

voidDrawMap();//画障碍物

voidCheckMap();//判断蛇是否撞到障碍物

voidSet_SelectFace();//游戏设置

voidDrawSetForm();//游戏设置键

voidTask_2();

/*

*************************************************************************************************************

-函数名称:

Task_4(void*pdata)

-函数说明:

GUI任务,优先级为56

-输入参数:

pdata

-输出参数:

*************************************************************************************************************

*/

voidTask_4(void*pdata)

{

I32k=0;

inti=0;

intj=0;

intx=0;

inty=0;

=0;//活着

[0]=100;[0]=40;//蛇头

[1]=80;[1]=40;//第一节蛇

[2]=60;[2]=40;

=3;//节数

=RIGHT;

=0;

while

(1)

{

if(score>=100)

{

score=0;

mapSelect++;

Set_Color(GUI_GREEN);

Set_Font(&CHINESE_FONT16);

Disp_String(CN_start"恭喜你,进入下一关!

"CN_end,240,240);

OSTimeDly(200);

NewGame();

}

if(key_F==1)//是否进入游戏设置

{

//OSTimeDly(100);

OSTimeDly(50000);

}

if[0]==*20)+20&&[0]==*20)+20)/*吃到食物以后*/

{

Set_Color(GUI_WHITE);//用白色去除蛇的的最后一节

Fill_Rect(*20)+20,*20)+20,*20)+40,*20)+40);

++;//蛇的身体长一节

=0;//画面上需要出现新的食物

score+=10;

PrScore();//输出新得分

}

x=[];

y=[];

for(i=;i>0;i--)//蛇的每个环节往前!

!

!

{

[i]=[i-1];

[i]=[i-1];

}

Set_Color(GUI_GREEN);//画出蛇

for(j=0;j<;j++)

{

Fill_Rect[j],[j],[j]+20,[j]+20);

}

if==0)//画食物

{

Random_Food();

Uart_Printf("randomx=%x\n",;

Uart_Printf("randomy=%x\n",;

Set_Color(GUI_RED);//设置食物颜色红色

Fill_Circle(*20)+30,*20)+30,10);//画食物,为红色的圆

}

switch//蛇的方向

{

caseUP:

if(oldDire!

=DOWN)

{

[0]-=20;

oldDire=;

}

else

{

[0]+=20;

}

break;

caseDOWN:

if(oldDire!

=UP)

{

[0]+=20;

oldDire=;

}

else

{

[0]-=20;

}

break;

caseLEFT:

if(oldDire!

=RIGHT)

{

[0]-=20;

oldDire=;

}

else

{

[0]+=20;

}

break;

caseRIGHT:

if(oldDire!

=LEFT)

{

[0]+=20;

oldDire=;

}

else

{

[0]-=20;

}

break;

default:

break;

}

Uart_Printf("[0]=%d**************[0]=%d\n",[0],[0]);

for(i=3;i<;i++)//是否撞到自己了,因为蛇头为两节,第三节不可能拐过来

{

if[i]==[0]&&[i]==[0])

{

=1;

break;

}

}

CheckMap();//判断蛇死亡条件

if[0]<20)

{

[0]=440;

}

elseif[0]>440){

[0]=20;

}

elseif[0]>440){

[0]=20;

}

elseif[0]<20){

[0]=440;

}

if(gametime<=0)//时间到了

{

=1;//蛇死

}

Uart_Printf(">>>>>>>>>>>>>>>>>>>>>>=%d\n",;

Uart_Printf(">>>>>>>>>>>>>>>>>>>>>>=%d\n",;

if==1)//蛇是否死了

{

GameOver();//本次游戏结束

OSTimeDly(50000);

}

if(gamespeed==0)//易

{

for(k=0;k<;k++);

}

elseif(gamespeed==1)//中

{

for(k=0;k<1000000;k++);

}

elseif(gamespeed==2)//难

{

for(k=0;k<100000;k++);

}

else

{

for(k=0;k<;k++);

}

Set_Color(GUI_WHITE);//用灰色去除蛇的的最后一节

Fill_Rect(x,y,x+20,y+20);

OSTimeDly(10);

}

}

/*

*************************************************************************************************************

-函数名称:

Task_3

-函数说明:

任务3,向串口发送数据

-输入参数:

pdata

-输出参数:

*************************************************************************************************************

*/

voidTask_3(void*pdata)

{

for(;;)

{

if(key_number!

=0xff)

{

Uart_Printf("key_number=%x\n",key_number);//任务的干得活儿就是向超级终端发送内容

key_number=0xff;

OSTimeDly(30);//延时100个节拍

}

//OSTimeDly(100);

}

}

voidTask_1(void*pdata)

{

INT8Uerr;

INT8U*Key_P;

INT8UKey_Val;

intys=0;

charcmapSelect[2];

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(;;)

{

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2