根据MSP430的游戏开发贪吃蛇和是男人就下一百层.docx
《根据MSP430的游戏开发贪吃蛇和是男人就下一百层.docx》由会员分享,可在线阅读,更多相关《根据MSP430的游戏开发贪吃蛇和是男人就下一百层.docx(21页珍藏版)》请在冰豆网上搜索。
![根据MSP430的游戏开发贪吃蛇和是男人就下一百层.docx](https://file1.bdocx.com/fileroot1/2023-1/24/bd7d19d3-7aae-4aa6-a2b6-3b3bce62a428/bd7d19d3-7aae-4aa6-a2b6-3b3bce62a4281.gif)
根据MSP430的游戏开发贪吃蛇和是男人就下一百层
uchara=0;
ucharbig=0;
ucharbig2=0;
ucharflg=0;
ucharlevelcnt=0;
uchardir_last=KEY_RIGHT;
voidtanchishe();//贪吃蛇实现函数
voidman();//是男人就下一百层实现函数
voidgamer()
{
charjt=36;
Set_Draw();
jiantou(20,jt,1);
drawpicfree(3,0,7,13,*mulu);
drawpicfree(2,15,7,28,*menutcs);
drawpicfree(2,30,4,43,*menuman);
//drawpicfree(2,45,9,58,*mubiao);
Delay(50000);
Delay(50000);
while
(1)
{
switch(key())
{case5:
if(jt>34)jt-=15;jiantou(20,jt+15,0);jiantou(20,jt,1);Delay(100000);break;
case3:
if(jt<32)jt+=15;jiantou(20,jt-15,0);jiantou(20,jt,1);Delay(100000);break;
case9:
if(jt==21)
gototcs1;
elseif(jt==36)
gotomn;
break;
//case0:
//goto;break;
}
}
mn:
man();
tcs1:
tanchishe();
}
voidtanchishe()
{intxx=0;
intyy=0;
uintspeed=22001;
Set_Drawq();
drawpicfree(0,0,15,63,*SNAKE);
track.trackend=3;
while
(1)
{
if(a)
LPM3;
uinti,j;
keypad.key=key();
//----------------------keypadcase-----------------------
switch(keypad.key)
{case11:
{if(speed>1000)speed-=1000;
elseif(speed>500)speed-=500;break;
}
case10:
speed+=1000;break;
case7:
if(flag.direction!
=KEY_LEFT)
flag.direction=KEY_RIGHT;
break;
case1:
//
if(flag.direction!
=KEY_RIGHT)
flag.direction=KEY_LEFT;
break;
case5:
if(flag.direction!
=KEY_DOWN)flag.direction=KEY_UP;break;
case3:
if(flag.direction!
=KEY_UP)flag.direction=KEY_DOWN;break;
case9:
{
//LCD_INT();
//LCD_CLR();
Set_Draw();
track.trackend=3;
bean.number=0;
xx=0;
yy=0;
flag.start=1;
flag.clear=1;
flag.direction=KEY_LEFT;
flag.gameover=0;
//speed=2000;
}
break;
case4:
if(flag.start==0)
{
//LCD_INT();
//LCD_CLR();
Set_Draw();
track.trackend=3;
bean.number=0;
xx=0;
yy=0;
flag.start=1;
flag.clear=1;
flag.direction=KEY_RIGHT;
flag.gameover=0;
//speed=2000;
}
break;
}
//---------------------------drawsnake-------------------------------------
//if(drawcnt>speed)
//{//if(flag.direction)
//drawRectangle(xx+0,yy+0,xx+3,yy+3,2,0);///////
//-----------------------------drawbeanbegin----------------------------
if(bean.number<1)
{
bean.coor[0]=rand()/1024*4;
bean.coor[1]=rand()/2048*4;
bean.number=1;
levelcnt++;
if(levelcnt==15)
{if(speed>2000)speed-=2000;
elseif(speed>500)speed-=500;
levelcnt=0;
flg=0;
WriteCom(0x01);//清屏
drawpicfree(0,0,15,63,*sj);
while(flg<8);
Set_Draw();
}
big++;
if(big==5)
big=0;
big2++;
if(big2==11)
big2=0;
}
if(flag.start)
{if(big==3)
drawRectangle(bean.coor[0]+0,bean.coor[1]+0,bean.coor[0]+3,bean.coor[1]+3,1,1);
elseif(big2==10)
drawyuan(bean.coor[0]+1,bean.coor[1]+0,bean.coor[0]+1,bean.coor[1]+3,2,1);
else
drawRectangle(bean.coor[0]+0,bean.coor[1]+0,bean.coor[0]+2,bean.coor[1]+2,1,1);
}
//------------------------------清楚头部---------------------------
switch(dir_last)
{caseKEY_RIGHT:
headright(xx,yy+0,0);
break;
caseKEY_LEFT:
headleft(xx,yy+0,0);
break;
caseKEY_UP:
headup(xx,yy,0);
break;
caseKEY_DOWN:
headdown(xx+0,yy,0);
break;
}
if(flag.direction)
{switch(flag.direction)
{caseKEY_RIGHT:
//drawRectangle(xx,yy-2,xx+7,yy+5,4,0);
shenx(xx,yy+0,1);break;
caseKEY_LEFT:
//drawRectangle(xx-4,yy-2,xx+3,yy+5,4,0);
shenx(xx,yy+0,1);break;
caseKEY_UP:
//drawRectangle(xx-2,yy-5,xx+5,yy+3,4,0);
sheny(xx+0,yy,1);break;
caseKEY_DOWN:
//drawRectangle(xx-2,yy,xx+5,yy+7,4,0);
sheny(xx+0,yy,1);break;
}}//drawsnakehead
//----------------------eatbean------------------------------------------
if(xx==bean.coor[0]&&yy==bean.coor[1])
{if(big==3)
track.trackend+=2;
elseif(big2==8)
track.trackend+=4;
elsetrack.trackend++;
bean.number--;
}
else
{
for(i=0;i{
if(xx==track.track[i][0]&&yy==track.track[i][1]&&(xx!
=0&&yy!
=0))
{
if(flag.gameover==0)
{
Lcd_flash(500,5);
drawpicfree(0,0,15,63,*over);
flag.direction=KEY_HOLD;
flag.gameover=1;
flag.start=0;
}
}
for(j=0;j<4;j++)
{
track.track[i][j]=track.track[i+1][j];//后一节获得前一节的坐标
}
}
}
//----------------------savesnaketrack--------------------------
track.track[track.trackend-1][0]=xx+0;
track.track[track.trackend-1][1]=yy+0;
track.track[track.trackend-1][2]=xx+3;
track.track[track.trackend-1][3]=yy+3;
//}
//---------------------------------------------
//drawcnt=0;
//------------------------movesnake----------------------------
switch(flag.direction)
{
caseKEY_RIGHT:
//headright(xx+0,yy+0,0);
xx+=4;
//drawRectangle(xx,yy,xx-1,yy+3,2,0);
headright(xx,yy+0,1);
break;
caseKEY_LEFT:
//headleft(xx+4,yy+0,0);
xx-=4;
//drawRectangle(xx+4,yy,xx+7,yy+3,2,0);
headleft(xx,yy+0,1);
break;
caseKEY_UP:
//headup(xx,yy,0);
yy-=4;
//drawRectangle(xx,yy+4,xx+3,yy+7,2,0);
headup(xx,yy,1);
break;
caseKEY_DOWN:
yy+=4;
//drawRectangle(xx,yy-4,xx+3,yy-1,2,0);
headdown(xx+0,yy,1);
break;
}
//------------------------------drawbeanend----------------------------------------
if(track.track[0][0]||track.track[0][1]||track.track[0][2]||track.track[0][3])
{
if(flag.direction)
{drawRectangle(track.track[0][0],track.track[0][1],track.track[0][2],track.track[0][3],2,0);
if(big!
=4&&big2!
=9)
{
drawRectangle(track.track[1][0],track.track[1][1],track.track[1][2],track.track[1][3],2,0);
if(track.track[1][0]==track.track[2][0]+4)
{//shenx(track.track[1][0],track.track[1][1],0);
tailleft(track.track[1][0],track.track[1][1],1);
//drawRectangle(track.track[0][0]+3,track.track[0][1],track.track[0][2]+3,track.track[0][3],2,0);
}
elseif(track.track[2][0]==track.track[1][0]+4)
{//shenx(track.track[1][0],track.track[1][1],0);
tailright(track.track[1][0],track.track[1][1],1);
//tailright(track.track[0][0],track.track[0][1],0);
}
elseif(track.track[1][1]==track.track[2][1]+4)
{//sheny(track.track[1][0],track.track[1][1],0);
tailup(track.track[1][0],track.track[1][1],1);
//tailup(track.track[0][0],track.track[0][1],0);
}
elseif(track.track[2][1]==track.track[1][1]+4)
{//sheny(track.track[1][0],track.track[1][1],0);
taildown(track.track[1][0],track.track[1][1],1);
//taildown(track.track[0][0],track.track[0][1],0);
}//clearn(track.track[0][0],track.track[0][1],track.track[0][2],track.track[0][3],0);
}
}
}
//clearsnaketail
if(xx==128)xx=0;
if(yy==64)yy=0;
if(flag.direction==KEY_LEFT&&xx==-4)xx=124;
if(flag.direction==KEY_UP&&yy==-4)yy=60;
//if(xx==252)xx=124;
//if(yy==252)yy=60;
if(flag.start==0)flag.direction=KEY_HOLD;
if(flag.clear==1)
{
LCD_CLR();
flag.clear=0;
}
dir_last=flag.direction;
Delay(speed);
}
}
//***********************是男人就下一百层******************************
//*****************************2010.11.5******************************
//*******************************byone************************************
//******************************v0.1beta**********************************
voidman()
{ucharguanstart=1;
DCOCTL|=0X60;
ucharmannum=1;
ucharlife=5;
uchari=0;
ucharscocnt=0;
ucharguan=0;
uintguancnt=0;
uintcnt=0;
uintscore=0;
charxx=0,yy=0;
uintsban=3,sdown=2;
Set_Drawq();
ban.number=2;
drawpicfree(0,0,15,63,*manface);
while
(1)
{
if(a)
LPM3;
keypad.key=key();
//**********************************keypadcase************************************
switch(keypad.key)
{case11:
if(sban>5)speed-=1;
break;
case10:
sban+=1;break;
//***************************************startgame*************************************one
case9:
if(flag.start==0)
{
Set_Draw();
score=0;
guan=1;
xx=50;
yy=0;
flag.start=1;
flag.clear=1;
flag.gameover=0;
ban.number=2;
ban.coor[1][0]=rand()%46+33;
;
ban.coor[2][0]=rand()%46+33;
ban.coor[1][1]=40;
ban.coor[2][1]=20;
drawRectangle(ban.coor[1][0]+0,ban.coor[1][1],ban.coor[1][0]+16,ban.coor[1][1]+2,1,1);
drawRectangle(ban.coor[2][0]+0,ban.coor[2][1],ban.coor[2][0]+16,ban.coor[2][1]+2,1,1);
drawman(xx,yy,1);}
WriteCom(0x01);
drawpicfree(0,0,15,63,*manui);
drawpicfree(0,18,3,25,*clearnmin);
drawnum2(14,18,guan,1);
break;
}
//************************************************************************************
//*******************************************过关重画**********************************
if(guanstart==0)
{
//Set_Draw();
//score=0;
//guan=1;
xx=50;
yy=0;
guanstart=1;
//flag.clear=1;
//flag.gameover=0;
ban.number=2;
ban.coor[1][0]=rand()%46+33;
;
ban.coor[2][0]=rand()%46+33;
ban.coor[1][1]=40;
ban.coor[2][1]=20;
drawRectangle(ban.coor[1][0]+0,ban.coor[1][1],ban.coor[1][0]+16,ban.coor[1][1]+2,1,1);
drawRectangle(ban.coor[2][0]+0,ban.coor[2][1],ban.coor[2][0]+16,ban.coor[2][1]+2,1,1);
drawman(xx,yy,1);
WriteCom(0x01);
drawpicfree(0,0,15,63,*manui);
drawpicfree(0,18,3,25,*clearnmin);
drawnum2(14,18,guan,1);
}
//********************************************************************************
//-----------------------------drawbanbegin----------------------------
if(mannum<1)
{xx=rand()%56+33;
yy=4;
drawman(xx,yy,1);
mannum=1;
}
if(ban.number<3)
{
ban.coor[0][0]=rand()%46+33;
ban.coor[0][1]=62;
ban.number=3;
drawRectangle(ban.coor[0][0]+0,ban.coor[0][1],ban.coor[0][0]+16,ban.coor[0][1]+2,1,1);
}
/*big++;
if(big==15)
big=0;
big2++;
if(big2==35)
big2=0;*/
//**************************人走动**********************one
switch(keypad.key)
{case1:
if(xx>33)
{drawman(xx,yy,0);
xx-=2;
drawman(xx,yy,1);
}
break;
/*if((yy==ban.coor[0][1]-