基于Freescale三轴加速度传感器LCD的贪食蛇游戏设计.docx
- 文档编号:1804895
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:15
- 大小:18.86KB
基于Freescale三轴加速度传感器LCD的贪食蛇游戏设计.docx
《基于Freescale三轴加速度传感器LCD的贪食蛇游戏设计.docx》由会员分享,可在线阅读,更多相关《基于Freescale三轴加速度传感器LCD的贪食蛇游戏设计.docx(15页珍藏版)》请在冰豆网上搜索。
基于Freescale三轴加速度传感器LCD的贪食蛇游戏设计
//说明:
该程序是基于freescaleMCU、三轴加速度传感器、ili9320LCD所写的贪食蛇游
//戏,上传代码拥有全部的设计思路以及大部分函数主体
//=================================================================
//宏定义按键
//=================================================================
Forpersonaluseonlyinstudyandresearch;notforcommercialuse
#defineKey_Up1
#defineKey_Down4
#defineKey_Left2
Forpersonaluseonlyinstudyandresearch;notforcommercialuse
#defineKey_Right3
#defineucharunsignedchar
//=================================================================
//使用结构体定义变量使程序的名称更加的清楚
//=================================================================
struct
{
ucharX;
ucharY;
ucharYes;
}Food;//食物结构体
#defineSNAKE_Max_Long20//最大长度
struct
{
ucharX[SNAKE_Max_Long];
ucharY[SNAKE_Max_Long];
ucharLong;
ucharLife;
ucharScore;//蛇的分数
ucharLevel;//蛇的等级
}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,?
?
=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];/*Savemeasuredvaluestotheoutputbuffer*/
*Values++=MMA_7260_OutV[2];/*Savemeasuredvaluestotheoutputbuffer*/
OutFlg=FALSE;
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)
//函数功能:
绘制游戏界面,初始化游戏等级等参数
//入口参数:
无
//出口参数:
无
//=================================================================
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]);
printp("GetYChannel:
%10D",KEY_BASE[1]);
printp("GetZChannel:
%10D",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,"少女32.FON","少符32.FON","郑友金",0xF800);
ili9320_Write_multi_HZ_ASCII(167+10,100,32,32,"少女32.FON","少符32.FON","贪食蛇",0xF800);
//***********初始化蛇参数********************//
Snake.Long=2;//定义初始化蛇的长度
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Freescale 加速度 传感器 LCD 贪食 游戏 设计