基于Freescale三轴加速度传感器LCD的贪食蛇游戏设计Word格式文档下载.docx

上传人:b****5 文档编号:19445994 上传时间:2023-01-06 格式:DOCX 页数:15 大小:18.39KB
下载 相关 举报
基于Freescale三轴加速度传感器LCD的贪食蛇游戏设计Word格式文档下载.docx_第1页
第1页 / 共15页
基于Freescale三轴加速度传感器LCD的贪食蛇游戏设计Word格式文档下载.docx_第2页
第2页 / 共15页
基于Freescale三轴加速度传感器LCD的贪食蛇游戏设计Word格式文档下载.docx_第3页
第3页 / 共15页
基于Freescale三轴加速度传感器LCD的贪食蛇游戏设计Word格式文档下载.docx_第4页
第4页 / 共15页
基于Freescale三轴加速度传感器LCD的贪食蛇游戏设计Word格式文档下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

基于Freescale三轴加速度传感器LCD的贪食蛇游戏设计Word格式文档下载.docx

《基于Freescale三轴加速度传感器LCD的贪食蛇游戏设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于Freescale三轴加速度传感器LCD的贪食蛇游戏设计Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。

基于Freescale三轴加速度传感器LCD的贪食蛇游戏设计Word格式文档下载.docx

}Snake;

//蛇结构体

ucharKey_V_temp=0;

//取出上次按键值

ucharKey_Value=0;

staticintl=0;

staticuint16KEY_Init[3]={0,0,0};

staticuint16KEY_BASE[3]={0,0,0};

score[20]={"

0"

"

10"

20"

30"

40"

50"

60"

70"

80"

90"

100"

110"

120"

130"

140"

150"

160"

170"

180"

190"

};

intlevel[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};

staticconstbyteChannels[]={13,14,15};

/*Contentsforthedevicecontrolregister*/

staticwordMMA_7260_OutV[3];

staticbyteSumChan;

staticbyteOutFlg;

voidMMA_7260_Init_3(void)

OutFlg=FALSE;

/*Nomeasuredvalue*/

/*ATD0CTL4:

SMP2=0,SMP1=0,SMP0=0,PRS4=0,PRS3=0,PRS2=1,PRS1=0,PRS0=1*/

ATD0CTL4=5;

/*Setsampletimeandprescaler*/

/*ATD0CTL3:

DJM=0,S8C=0,S4C=0,S2C=0,S1C=1,FIFO=0,FRZ1=0,FRZ0=0*/

ATD0CTL3=8;

/*SetATDcontrolregister3*/

/*ATD0CTL0:

?

?

=0,?

=0,WRAP3=1,WRAP2=1,WRAP1=1,WRAP0=1*/

ATD0CTL0=15;

/*Setwraparound*/

/*ATD0CTL1:

ETRIGSEL=0,SRES1=1,SRES0=0,SMP_DIS=1,ETRIGCH3=1,ETRIGCH2=1,ETRIGCH1=1,ETRIGCH0=1*/

ATD0CTL1=95;

/*Setresolutionanddischarge*/

/*ATD0CTL2:

=0,AFFC=1,ICLKSTP=0,ETRIGLE=0,ETRIGP=0,ETRIGE=0,ASCIE=0,ACMPIE=0*/

ATD0CTL2=64;

/*SetATDcontrolregister2*/

}

//-----------------------------------------------------

staticvoidMMA_7260_Measure_3(void)

for(SumChan=0;

SumChan<

3;

SumChan++){

ATD0CTL5=Channels[SumChan];

/*Startmeasurementofnextchannel*/

while(!

ATD0STAT0_SCF){}/*WaitforADconversioncomplete*/

MMA_7260_OutV[SumChan]=ATD0DR0;

/*Savemeasuredvalue*/

}

OutFlg=TRUE;

/*Measuredvaluesareavailable*/

byteMMA_7260_GetValue16_3(word*Values)

if(!

OutFlg){/*Ismeasuredvalue(s)available?

*/

return0;

/*Ifnothenerror*/

/*Note:

Next4linesarespeedoptimized*/

*Values++=MMA_7260_OutV[0];

/*Savemeasuredvaluestotheoutputbuffer*/

*Values++=MMA_7260_OutV[1];

*Values++=MMA_7260_OutV[2];

return1;

/*OK*/

////////////////////////贪食蛇游戏/////////////////////////////////

//函数名称:

Trun_On_PointTrun_Off_Point(ucharx,uchary)

//函数功能:

点亮或者熄灭一个点。

用于显示蛇身体

//入口参数:

//出口参数:

//特别说明:

此Trun_On,函数换成其他的就可以兼容其他的液晶

//入8*8点阵12864等

voidTrun_On_Point(ucharx,uchary,ucharcolor)

ili9320_Rectangle((4*(x+2)),(4*(y+2)),(4*(x+3)),(4*(y+3)),color,color);

//Bar((4*(x+2)),(4*(y+2)),(4*(x+3)),(4*(y+3)),color);

voidTrun_Off_Point(ucharx,uchary)

ili9320_Rectangle((4*(x+2)),(4*(y+2)),(4*(x+3)),(4*(y+3)),0xFFFF,0xFFFF);

voidInit_SNAKE(void)

绘制游戏界面,初始化游戏等级等参数

uchari;

//***********获取方向基准********************//

MMA_7260_Init_3();

MMA_7260_Measure_3();

MMA_7260_GetValue16_3(&

KEY_BASE);

//以下语句可以通过串口检验三轴加速度数据

/*

if(Flag){

printp("

GetXChannel:

%10D"

KEY_BASE[0]);

GetYChannel:

KEY_BASE[1]);

GetZChannel:

KEY_BASE[2]);

*/

//***********绘制游戏界面********************//

ili9320_Rectangle(4,4,166,206,0,0);

ili9320_Rectangle(5,5,167,207,0,0);

ili9320_Rectangle(6,6,168,208,0,0);

ili9320_Rectangle(5,5,169,209,0,0);

ili9320_Rectangle(7,7,167,207,0xFFFF,0xFFFF);

//绘制一个矩形框,160*240

ili9320_Write_multi_HZ_ASCII(167+10,32,32,32,"

少女32.FON"

少符32.FON"

07电信一"

0xF800);

ili9320_Write_multi_HZ_ASCII(167+10,66,32,32,"

郑友金"

ili9320_Write_multi_HZ_ASCII(167+10,100,32,32,"

贪食蛇"

//***********初始化蛇参数********************//

Snake.Long=2;

//定义初始化蛇的长度

Snake.Life=0;

//初始化蛇还活着

Snake.Score=0;

Food.Yes=1;

Key_Value=0;

for(i=0;

i<

Snake.Long;

i++)//将蛇给赋值

{

Snake.X[i]=i+10;

Snake.Y[i]=10;

}

i++)//将蛇给画出来

Trun_On_Point(Snake.X[i],Snake.Y[i],0);

voidDisplay_dead(uchari)

显示死亡界面

voidDisplay_dead(uchari)

l=0;

Snake.Level=0;

ili9320_Text(7+30,7+40,"

GAMEOVER"

9,0,0xffff);

ili9320_Delay(3000);

Init_SNAKE();

voidDisplay_Pass(uchari)

显示过关界面

l++;

Snake.Level++;

YOUWIN"

7,0,0xffff);

voidDisplay_finish(uchari);

显示通关界面

voidDisplay_finish(uchari)

ili9320_Text(7+30,7+80,"

GAMEFINISHED"

13,0,0xffff);

ili9320_Delay(4000);

voidRun_SNAKE(void)

蛇运动函数

/*********************采用扫描MMA_7260方式确立方向*******************/

uchari=0;

uint16KEY_Init[4]={0,0,0,0};

KEY_Init);

//以下语句可以通过串口检验三轴加速度数据

/*

GetX1Channel:

KEY_Init[0]);

GetY1Channel:

KEY_Init[1]);

GetZ1Channel:

KEY_Init[2]);

GetX2Channel:

KEY_Init[0]-KEY_BASE[0]);

GetY2Channel:

KEY_Init[1]-KEY_BASE[1]);

GetZ2Channel:

KEY_Init[2]-KEY_BASE[2]);

if((KEY_Init[0]-KEY_BASE[0])>

500&

&

(KEY_Init[0]-KEY_BASE[0])<

3000)Key_Value=Key_Left;

if((KEY_BASE[0]-KEY_Init[0])>

(KEY_BASE[0]-KEY_Init[0])<

3000)Key_Value=Key_Right;

if((KEY_Init[1]-KEY_BASE[1])>

(KEY_Init[1]-KEY_BASE[1])<

3000)Key_Value=Key_Up;

if((KEY_BASE[1]-KEY_Init[1])>

(KEY_BASE[1]-KEY_Init[1])<

3000)Key_Value=Key_Down;

//Cpu_Delay100US(2100-Snake.Level*400);

/*********************方向取值完毕*******************/

/*********************根据按键选择蛇的运动方向*******************/

//if((Key_Value==Key_Right&

Key_V_temp!

=Key_Left)||(Key_Value==Key_Left&

Key_V_temp==Key_Right))

if(Key_Value==Key_Right)

{//1.蛇行不是左向,下步可以右向。

2.蛇行右向,按左向无效,继续右向

Trun_Off_Point(Snake.X[0],Snake.Y[0]);

//先把蛇尾给熄灭掉

for(i=0;

Snake.Long-1;

i++)//蛇身都是它前一段的蛇身的位置

{

Snake.X[i]=Snake.X[i+1];

Snake.Y[i]=Snake.Y[i+1];

}

Snake.X[Snake.Long-1]=Snake.X[Snake.Long-2]+1;

Snake.Y[Snake.Long-1]=Snake.Y[Snake.Long-2]+0;

//蛇头向你要求的方向移动

i++)//这个让蛇显示出来的函数

Trun_On_Point(Snake.X[i],Snake.Y[i],0xffff);

}

Key_Value=0;

//Key_V_temp=Key_Right;

//if((Key_Value==Key_Left&

=Key_Right)||(Key_Value==Key_Right&

Key_V_temp==Key_Left))

if(Key_Value==Key_Left)

//先把蛇尾给熄灭掉

Snake.X[Snake.Long-1]=Snake.X[Snake.Long-2]-1;

//Key_V_temp=Key_Left;

//if((Key_Value==Key_Up&

=Key_Down)||(Key_Value==Key_Down&

Key_V_temp==Key_Up))

if(Key_Value==Key_Up)

Snake.X[Snake.Long-1]=Snake.X[Snake.Long-2]+0;

Snake.Y[Snake.Long-1]=Snake.Y[Snake.Long-2]-1;

//Key_V_temp=Key_Up;

//if((Key_Value==Key_Down&

=Key_Up)||(Key_Value==Key_Up&

Key_V_temp==Key_Down))

if(Key_Value==Key_Down)

Snake.Y[Snake.Long-1]=Snake.Y[Snake.Long-2]+1;

//Key_V_temp=Key_Down;

/****************根据按键选择蛇的运动程序结束*******************/

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

当前位置:首页 > 职业教育 > 其它

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

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