基于MSP430的游戏开发.docx
《基于MSP430的游戏开发.docx》由会员分享,可在线阅读,更多相关《基于MSP430的游戏开发.docx(24页珍藏版)》请在冰点文库上搜索。
基于MSP430的游戏开发
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);
=3;
while
(1)
{
if(a)
LPM3;
uinti,j;
=key();
//----------------------keypadcase-----------------------
switch
{case11:
{if(speed>1000)speed-=1000;
elseif(speed>500)speed-=500;break;
}
case10:
speed+=1000;break;
case7:
if!
=KEY_LEFT)
=KEY_RIGHT;
break;
case1:
//
if!
=KEY_RIGHT)
=KEY_LEFT;
break;
case5:
if!
=KEY_DOWN)=KEY_UP;break;
case3:
if!
=KEY_UP)=KEY_DOWN;break;
case9:
{
//LCD_INT();
//LCD_CLR();
Set_Draw();
=3;
=0;
xx=0;
yy=0;
=1;
=1;
=KEY_LEFT;
=0;
//speed=2000;
}
break;
case4:
if==0)
{
//LCD_INT();
//LCD_CLR();
Set_Draw();
=3;
=0;
xx=0;
yy=0;
=1;
=1;
=KEY_RIGHT;
=0;
//speed=2000;
}
break;
}
//---------------------------drawsnake-------------------------------------
//if(drawcnt>speed)
//{//if
//drawRectangle(xx+0,yy+0,xx+3,yy+3,2,0);///////
//-----------------------------drawbeanbegin----------------------------
if<1)
{
[0]=rand()/1024*4;
[1]=rand()/2048*4;
=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
{if(big==3)
drawRectangle[0]+0,[1]+0,[0]+3,[1]+3,1,1);
elseif(big2==10)
drawyuan[0]+1,[1]+0,[0]+1,[1]+3,2,1);
else
drawRectangle[0]+0,[1]+0,[0]+2,[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
{switch
{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==[0]&&yy==[1])
{if(big==3)
+=2;
elseif(big2==8)
+=4;
else++;
;
}
else
{
for(i=0;i<;i++)
{
if(xx==[i][0]&&yy==[i][1]&&(xx!
=0&&yy!
=0))
{
if==0)
{
Lcd_flash(500,5);
drawpicfree(0,0,15,63,*over);
=KEY_HOLD;
=1;
=0;
}
}
for(j=0;j<4;j++)
{
[i][j]=[i+1][j];//后一节获得前一节的坐标
}
}
}
//----------------------savesnaketrack--------------------------
[][0]=xx+0;
[][1]=yy+0;
[][2]=xx+3;
[][3]=yy+3;
//}
//---------------------------------------------
//drawcnt=0;
//------------------------movesnake----------------------------
switch
{
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[0][0]||[0][1]||[0][2]||[0][3])
{
if
{drawRectangle[0][0],[0][1],[0][2],[0][3],2,0);
if(big!
=4&&big2!
=9)
{
drawRectangle[1][0],[1][1],[1][2],[1][3],2,0);
if[1][0]==[2][0]+4)
{//shenx[1][0],[1][1],0);
tailleft[1][0],[1][1],1);
//drawRectangle[0][0]+3,[0][1],[0][2]+3,[0][3],2,0);
}
elseif[2][0]==[1][0]+4)
{//shenx[1][0],[1][1],0);
tailright[1][0],[1][1],1);
//tailright[0][0],[0][1],0);
}
elseif[1][1]==[2][1]+4)
{//sheny[1][0],[1][1],0);
tailup[1][0],[1][1],1);
//tailup[0][0],[0][1],0);
}
elseif[2][1]==[1][1]+4)
{//sheny[1][0],[1][1],0);
taildown[1][0],[1][1],1);
//taildown[0][0],[0][1],0);
}//clearn[0][0],[0][1],[0][2],[0][3],0);
}
}
}
//clearsnaketail
if(xx==128)xx=0;
if(yy==64)yy=0;
if==KEY_LEFT&&xx==-4)xx=124;
if==KEY_UP&&yy==-4)yy=60;
//if(xx==252)xx=124;
//if(yy==252)yy=60;
if==0)=KEY_HOLD;
if==1)
{
LCD_CLR();
=0;
}
dir_last=;
Delay(speed);
}
}
//***********************是男人就下一百层******************************
//*****************************one************************************
//******************************beta**********************************
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();
=2;
drawpicfree(0,0,15,63,*manface);
while
(1)
{
if(a)
LPM3;
=key();
//**********************************keypadcase************************************
switch
{case11:
if(sban>5)speed-=1;
break;
case10:
sban+=1;break;
//***************************************startgame*************************************one
case9:
if==0)
{
Set_Draw();
score=0;
guan=1;
xx=50;
yy=0;
=1;
=1;
=0;
=2;
[1][0]=rand()%46+33;
;
[2][0]=rand()%46+33;
[1][1]=40;
[2][1]=20;
drawRectangle[1][0]+0,[1][1],[1][0]+16,[1][1]+2,1,1);
drawRectangle[2][0]+0,[2][1],[2][0]+16,[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;
//=1;
//=0;
=2;
[1][0]=rand()%46+33;
;
[2][0]=rand()%46+33;
[1][1]=40;
[2][1]=20;
drawRectangle[1][0]+0,[1][1],[1][0]+16,[1][1]+2,1,1);
drawRectangle[2][0]+0,[2][1],[2][0]+16,[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<3)
{
[0][0]=rand()%46+33;
[0][1]=62;
=3;
drawRectangle[0][0]+0,[0][1],[0][0]+16,[0][1]+2,1,1);
}
/*big++;
if(big==15)
big=0;
big2++;
if(big2==35)
big2=0;*/
//**************************人走动**********************one
switch
{case1:
if(xx>33)
{drawman(xx,yy,0);
xx-=2;
drawman(xx,yy,1);
}
break;
/*if((yy==[0][1]-1&&xx>=[0][0]&&xx<=[0][0]+16)||(yy==[1][1]-1&&xx>=[1][0]&&xx<=[1][0]+16)||(yy==[2][1]-1&&xx>=[2][0]&&xx<=[2]
for(i=0;i<3;i++)
{if(yy==[i][1]-4)
if(xx>=[i][0])
if(xx<=[i][0]+16)
{drawman(xx,yy,0);
xx-=2;
drawman(xx,yy,1);
gotofang1;break;
}
}
drawman(xx,yy,0);
xx-=2;
drawman(xx,yy,1);
}break;
fang1:
*/
case7:
if(xx<94)
{drawman(xx,yy,0);
xx+=2;
drawman(xx,yy,1);
}
break;}
/*
if((yy==[0][1]-1&&xx>=[0][0]&&xx<=[0][0]+16)||(yy==[1][1]-1&&xx>=[1][0]&&xx<=[1][0]+16)||(yy==[2][1]-1&&xx>=[2][0]&&xx<=[2]
//[0]+16))
{for(i=0;i<3;i++)
{if(yy==[i][1]-4)
if(xx>=[i][0])
if(xx<=[i][0]+16)
{drawman(xx,yy,0);
xx+=2;
drawman(xx,yy,1);
gotofang2;break;
}
}
drawman(xx,yy,0);
xx+=2;
drawman(xx,yy,1);
}
break;
}
fang2:
*/
//*************************************************************
//******************************************down*************************one
for(i=0;i<3;i++)
{if(yy==[i][1]-6)
if(xx>=[i][0])
if(xx<=[i][0]+16)
//if((yy==[0][1]-1&&xx>=[0][0]&&xx<=[0][0]+16)||(yy==[1][1]-1&&xx>=[1][0]&&xx<=[1][0]+16)||(yy==[2][1]-1&&xx>=[2][0]&&xx<=
{drawman(xx,yy+2,0);
yy=[i][1]-6;gotoa1;
}if(i==2)
{//if(cnt%sdown==1)
drawman(xx,yy,0);yy+=2;
}
}
a1:
drawman(xx,yy,1);
cnt++;
if(cnt==1000)
cnt=0;
if(cnt%sban==1)
{for(i=0;i<3;i++)
drawRectangle[i][0]+0,[i][1],[i][0]+16,[i][1]+2,1,0);
//if(cnt%sban==1)
for(i=0;i<3;i++)
{[i][1]-=2;
drawRectangle[i][0]+0,[i][1],[i][0]+16,[i][1]+2,1,1);
}
for(i=0;i<3;i++)
{if(yy==[i][1]-4)
if(xx>=[i][0])
if(xx<=[i][0]+16)
yy=[i][1]-6;
}
}
//{if(cnt%sdown==1)
//yy+=2;}
//[2][0]+16))
{//if(cnt%sban==1)
//yy+=2;
}
//****************************************************************************
/********************************cleananddrawban******************************
for(i=0;i<3;i++)
{
drawRectangle[i][0]+0,[i][1]-2,[i][0]+16,[i][1],1,1);
}
//********************************************************************************/
//**