贪吃蛇Word文件下载.docx

上传人:b****4 文档编号:17074448 上传时间:2022-11-28 格式:DOCX 页数:21 大小:20.82KB
下载 相关 举报
贪吃蛇Word文件下载.docx_第1页
第1页 / 共21页
贪吃蛇Word文件下载.docx_第2页
第2页 / 共21页
贪吃蛇Word文件下载.docx_第3页
第3页 / 共21页
贪吃蛇Word文件下载.docx_第4页
第4页 / 共21页
贪吃蛇Word文件下载.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

贪吃蛇Word文件下载.docx

《贪吃蛇Word文件下载.docx》由会员分享,可在线阅读,更多相关《贪吃蛇Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。

贪吃蛇Word文件下载.docx

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

#defineK_UP56//"

8"

#defineK_DOWN50//"

2"

#defineK_LEFT52//"

4"

#defineK_RIGHT54//"

6"

#defineK_RESET46//"

."

#defineK_ADD43//"

+"

#defineK_SUB45//"

-"

///*****************事件定义*****************///

/////////////////////////////////////////////////////

//Mainfunction.//

////////////////////////////////////////////////////

intmain(void)

{

ARMTargetInit();

//dotarget(uHALbasedARMsystem)initialisation//

OSInit();

//neededbyuC/OS-II//

OSInitUart();

串口通信初始化

initOSFile();

文件系统初始化

#ifUSE_MINIGUI==0

initOSMessage();

initOSList();

初始化链表

initOSDC();

初始化绘图上下文P224

initOSCtrl();

初始化控件P234

LoadFont();

装载字库P248

#endif

loadsystemParam();

//createthetasksinuC/OSandassignincreasing//

//prioritiestothemsothatTask3attheendof//

//thepipelinehasthehighestpriority.//

LCD_printf("

CreatetaskonuCOS-II...\n"

);

OSTaskCreate(Main_Task,(void*)0,(OS_STK*)&

Main_Stack[STACKSIZE-1],Main_Task_Prio);

OSTaskCreate(test_Task,(void*)0,(OS_STK*)&

test_Stack[400-1],test_Task_Prio);

OSTaskCreate(new_Task,(void*)0,(OS_STK*)&

new_Stack[STACKSIZE-1],new_Task_Prio);

OSAddTask_Init

(1);

定义4个系统任务,触屏9,键盘扫描58,系统任务1,LCD刷新任务59.

StartinguCOS-II...\n"

Enteringgraphmode...\n"

LCD_ChangeMode(DspGraMode);

图形模式。

文本模式:

Dsptxtmode

OSStart();

//starttheOS//

//neverreached//

return0;

}//main

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

PTextCtrlpTextCtrl;

//文本框结构控件指针P237

#defineID_MainTextCtrl101//文本框控件ID

#defineRGB00x00000000//蛇的颜色

#defineRGB10x00ffffff//擦除蛇尾

enumfunnum{m_pause,m_up,m_down,m_left,m_right}funnum=m_left;

//功能指示键(停,上,下,左,右)

enumm_flag{up_down,left_right}m_flag=left_right;

//当前蛇的运动方向标志枚举类型

PDCpdc;

DC指针

POSMSGpMsg=0;

//定义消息结构消息结构指针

structRECTrect[1000];

绘图有效范围

structRECTrect1;

//蛇尾参量

constintX=10,Y=6;

//障碍物大小定义为值不可变的变量

structRECTblock[2];

//障碍物

intQ=0;

//生成的豆子是否有效

intN;

//记录蛇的节数

inti;

//for循环

intj=0;

//所吃豆子个数

intcount_lever=1;

//当前关卡----共5关

intTIME=250;

//延迟时间

intminutes;

//运行时间

intseconds;

constintD=10;

//定义蛇的大小;

BOOLEANK=FALSE;

//是否有豆子产生

BOOLEANStarting;

//开始/暂停状态标志

BOOLEANclc_screen;

//是否已清屏

BOOLEANT1_down;

BOOLEANT2_down;

BOOLEANT1_up;

BOOLEANT2_up;

BOOLEANT1_left;

BOOLEANT2_left;

BOOLEANT1_right;

BOOLEANT2_right;

BOOLEANif_restart;

//是否重启

BOOLEANme_self;

//是否撞到自己

intbean_top,bean_left;

//豆子坐标

intbean_right,bean_bottom;

inteara_top=50,eara_left=20;

//窗体大小

inteara_bottom=430,eara_right=620;

inttext_x=250,text_y=200;

//显示gameover

intx3=20,y3=35;

//文本坐标

intx2=20,y2=440;

//

intx2_off;

//偏移量

intx3_off;

intnumber=0;

U16ch[5];

//显示数据

U16ch_mins[5];

//分

U16ch_doc[2]={'

:

'

};

//"

"

U16ch_secs[5];

//秒

U16uscore[10];

U16utimer[10];

U16uspeed[10];

U16ulever[10];

U16ugameover[20];

charscore[10]="

SCORE:

;

chartimer[10]="

TIME:

charspeed[10]="

SPEED:

charlever[10]="

LEVER:

chargameover[20]="

GAMEOVER"

intsysnumber;

charsysfilename[]="

/sys/ucos/fj/sys.dat"

//打开的文件名

voidLoadSysNumber()

FILE*pfile;

//定义文件结构指针

pfile=fopen(sysfilename,"

r"

//打开文件

if(pfile==NULL){//打开文件失败

sysnumber=0;

return;

}

fread(&

sysnumber,sizeof(int),1,pfile);

//读文件

fclose(pfile);

//关闭文件

}

voidSaveSysNumber()

w"

返回文件地址打开文件的作用?

if(pfile==NULL){

fwrite(&

sysnumber,sizeof(int),1,pfile);

//写文件

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

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

rect[0]表示蛇头;

rect[1]表示蛇身;

.......;

rect[N]表示蛇尾;

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

U8onKey(intnkey,intfnkey);

voidstart_again(void);

//初始化为三节

voiddraw_snake(void);

//绘制蛇

voidpro_bean(void);

//产生豆子

voidsnake_mov(void);

//移动

voideating_bean(void);

//吃到豆子

voidto_to(void);

//扫描键盘

voidgame_over(void);

//游戏结束

voidget_score(void);

//得分

voidtime_show(void);

//显示运行时间

voidspeed_show(void);

//速度

voidtext_show(void);

//显示文本

voidH_block(void);

voidlever_show(void);

//关卡

voidif_dead(void);

voidMain_Task(void*Id)//Main_Test_Task

{

//POSMSGpMsg=0;

//定义消息结构

pdc=CreateDC();

start_again();

//消息循环

restart:

//if_restart=FALSE;

for(;

){

pro_bean();

if_dead();

//if(if_restart)

//gotorestart;

switch(funnum){

casem_down:

{

if(K==TRUE&

&

rect[0].bottom==bean_top&

rect[0].left==bean_left)//吃到豆子

eating_bean();

else

snake_mov();

if(rect[0].bottom==eara_bottom||T1_down||T2_down||me_self)

{

game_over();

start_again();

gotorestart;

}

else

{

rect[0].top+=D;

rect[0].bottom+=D;

draw_snake();

}

break;

}

casem_up:

rect[0].top==bean_bottom&

if(rect[0].top==eara_top||T1_up||T2_up||me_self)

rect[0].top-=D;

rect[0].bottom-=D;

break;

casem_left:

{

rect[0].left==bean_right&

rect[0].top==bean_top)//吃到豆子

if(rect[0].left==eara_left||T1_left||T2_left||me_self)

}

rect[0].left-=D;

rect[0].right-=D;

casem_right:

rect[0].right==bean_left&

rect[0].top==bean_top)//吃到豆子

snake_mov();

if(rect[0].right==eara_right||T1_right||T2_right||me_self)

rect[0].left+=D;

rect[0].right+=D;

casem_pause:

break;

}

U8onKey(intnkey,intfnkey)

//pdc=CreateDC();

switch(nkey){

case'

\r'

//OK

if(!

Starting){//处于开始模式

Starting=TRUE;

}

else{//处于暂停模式

funnum=m_pause;

Starting=FALSE;

break;

caseK_DOWN:

//下移

if(m_flag==left_right)

{

funnum=m_down;

m_flag=up_down;

break;

caseK_LEFT:

//左移

if(m_flag==up_down)

funnum=m_left;

m_flag=left_right;

caseK_RIGHT:

//右移

funnum=m_right;

caseK_UP:

//上移

funnum=m_up;

caseK_RESET:

//复位

start_again();

//if_restart=TRUE;

caseK_ADD:

TIME-=50;

if(TIME<

=0)

TIME=250;

speed_show();

caseK_SUB:

TIME+=50;

if(TIME>

=500)

speed_show();

DestoryDC(pdc);

//删除绘图设备上下文

returnTRUE;

voidstart_again()//初始化为三节

//OSTimeDly(500);

ClearScreen();

//清屏

clc_screen=TRUE;

me_self=FALSE;

funnum=m_left;

TIME=250;

minutes=0;

seconds=0;

count_lever=1;

lever_show();

time_show();

N=3;

//蛇的节数

j=0;

K=FALSE;

rect[0].left=100;

//绘制蛇头

rect[0].top=100;

for(i=0;

i<

N;

i++)

rect[i+1].left=rect[i].left+D;

rect[i+1].top=rect[i].top;

for(i=0;

=N;

{

rect[i].right=rect[i].left+D;

rect[i].bottom=rect[i].top+D;

draw_snake();

get_score();

Starting=TRUE;

voiddraw_snake()//绘制蛇

for(i=0;

FillRect2(pdc,&

rect[i],0x00,0x00000000);

该函数用指定的画刷填充矩形,此函数包括矩形的左上边界,但不包括矩形的右下边界。

voidpro_bean()//产生豆子

if(K==FALSE){

Q=0;

bean_top=rand()%38*D+eara_top;

bean_left=rand()%60*D+eara_left;

随机函数

bean_bottom=bean_top+D;

D为蛇节边长

bean_right=bean_left+D;

2;

if(bean_top<

=block[i].bottom||bean_bottom>

=block[i].top||bean_left>

=block[i].right||bean_right<

=blo

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

当前位置:首页 > 考试认证 > 交规考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1