您好,欢迎来到划驼旅游。
搜索
您的当前位置:首页基于MSP430的游戏开发(贪吃蛇和是男人就下一百层)

基于MSP430的游戏开发(贪吃蛇和是男人就下一百层)

来源:划驼旅游
uchar a= 0; uchar big=0; uchar big2=0; uchar flg=0;

uchar levelcnt=0;

uchar dir_last=KEY_RIGHT;

void tanchishe();//贪吃蛇实现函数

void man();//是男人就下一百层实现函数 void gamer() {

char jt=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())

{case 5: if(jt>34)jt-=15;jiantou(20,jt+15,0);jiantou(20,jt,1);Delay(100000);break;

case 3: if(jt<32)jt+=15;jiantou(20,jt-15,0);jiantou(20,jt,1);Delay(100000);break; case 9:

if(jt==21) goto tcs1;

else if(jt==36) goto mn;

break; //case 0:

//goto ;break; } }

mn:man();

tcs1:tanchishe(); }

void tanchishe() {int xx=0 ; int yy=0 ;

uint speed=22001; Set_Drawq();

drawpicfree(0,0,15,63,*SNAKE); track.trackend=3 ; while(1) {

if(a) LPM3; uint i,j ;

keypad.key=key();

//----------------------keypad case-----------------------

switch(keypad.key) { case 11:

{if(speed>1000)speed-=1000;

else if(speed>500) speed-=500;break; }

case 10:speed+=1000;break; case 7 : if(flag.direction!=KEY_LEFT)

flag.direction=KEY_RIGHT ; break ;

case 1 : // if(flag.direction!=KEY_RIGHT)

flag.direction=KEY_LEFT ; break ;

case 5:

if(flag.direction!=KEY_DOWN)flag.direction=KEY_UP;break ;

case 3: if(flag.direction!=KEY_UP)flag.direction=KEY_DOWN;break ; case 9: {

//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 ; case 4: 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 ; }

//---------------------------draw snake------------------------------------- // if(drawcnt>speed) // { //if(flag.direction)

// drawRectangle(xx+0,yy+0,xx+3,yy+3,2,0);///////

//-----------------------------draw bean begin---------------------------- 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; else if(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); else if(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)

{ case KEY_RIGHT :

headright(xx,yy+0,0); break ;

case KEY_LEFT :

headleft(xx,yy+0,0);

break ;

case KEY_UP : headup(xx,yy,0);

break ;

case KEY_DOWN : headdown(xx+0,yy,0); break ; }

if(flag.direction)

{switch(flag.direction) {case KEY_RIGHT:

//drawRectangle(xx,yy-2,xx+7,yy+5,4,0); shenx(xx,yy+0,1);break; case KEY_LEFT:

// drawRectangle(xx-4,yy-2,xx+3,yy+5,4,0); shenx(xx,yy+0,1);break; case KEY_UP:

// drawRectangle(xx-2,yy-5,xx+5,yy+3,4,0); sheny(xx+0,yy,1);break; case KEY_DOWN:

// drawRectangle(xx-2,yy,xx+5,yy+7,4,0); sheny(xx+0,yy,1);break; }}//draw snake head

//----------------------eat bean------------------------------------------ if(xx==bean.coor[0]&&yy==bean.coor[1]) {if(big==3)

track.trackend+=2; else if(big2==8) track.trackend+=4;

else track.trackend++;

bean.number--; } else {

for(i=0;iif(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];// 后一节获得前一节的坐标 } } }

//----------------------save snake track-------------------------- 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 ;

//------------------------move snake---------------------------- switch(flag.direction) {

case KEY_RIGHT :

// headright(xx+0,yy+0,0); xx+=4 ;

//drawRectangle(xx,yy,xx-1,yy+3,2,0); headright(xx,yy+0,1);

break ;

case KEY_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 ;

case KEY_UP :

// headup(xx,yy,0); yy-=4 ;

// drawRectangle(xx,yy+4,xx+3,yy+7,2,0);

headup(xx,yy,1); break ;

case KEY_DOWN :

yy+=4 ;

// drawRectangle(xx,yy-4,xx+3,yy-1,2,0); headdown(xx+0,yy,1); break ; }

//------------------------------draw bean end---------------------------------------- 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); }

else if(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); }

else if(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); }

else if(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); }

} }

//clear snake tail if(xx==128)xx=0 ; if(yy==)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******************************

//*******************************by one************************************ //******************************v0.1 beta********************************** void man()

{uchar guanstart=1;

DCOCTL |= 0X60; uchar mannum=1; uchar life=5; uchar i=0; uchar scocnt=0; uchar guan=0; uint guancnt=0; uint cnt=0; uint score=0; char xx=0,yy=0;

uint sban=3,sdown=2; Set_Drawq(); ban.number=2;

drawpicfree(0,0,15,63,*manface);

while(1) { if(a)

LPM3; keypad.key=key();

//**********************************keypad case************************************

switch(keypad.key) { case 11:

if(sban>5)speed-=1; break;

case 10:sban+=1;break;

//***************************************start

game*************************************one case 9: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); }

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

//-----------------------------draw ban begin---------------------------- 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) {case 1: if(xx>33)

{ drawman(xx,yy,0); xx-=2;

drawman(xx,yy,1); }

break;

/*if((yy==ban.coor[0][1]-1&&xx>=ban.coor[0][0]&&xx<=ban.coor[0][0]+16)||(yy==ban.coor[1][1]-1&&xx>=ban.coor[1][0]&&xx<=ban.coor[1][0]+16)||(yy==ban.coor[2][1]-1&&xx>=ban.coor[2][0]&&xx<=ban.coor[2] for(i=0;i<3;i++)

{if(yy==ban.coor[i][1]-4) if(xx>=ban.coor[i][0])

if(xx<=ban.coor[i][0]+16)

{ drawman(xx,yy,0); xx-=2;

drawman(xx,yy,1);

goto fang1;break; } }

drawman(xx,yy,0); xx-=2;

drawman(xx,yy,1);

}break;

fang1: */

case 7:if(xx<94)

{ drawman(xx,yy,0); xx+=2;

drawman(xx,yy,1); }

break;} /*

if((yy==ban.coor[0][1]-1&&xx>=ban.coor[0][0]&&xx<=ban.coor[0][0]+16)||(yy==ban.coor[1][1]-1&&xx>=ban.coor[1][0]&&xx<=ban.coor[1][0]+16)||(yy==ban.coor[2][1]-1&&xx>=ban.coor[2][0]&&xx<=ban.coor[2]

//[0]+16))

{for(i=0;i<3;i++) {if(yy==ban.coor[i][1]-4) if(xx>=ban.coor[i][0])

if(xx<=ban.coor[i][0]+16)

{ drawman(xx,yy,0);

xx+=2;

drawman(xx,yy,1); goto fang2;break; } }

drawman(xx,yy,0);

xx+=2; drawman(xx,yy,1); }

break; }

fang2:*/

//************************************************************* //******************************************down*************************one

for(i=0;i<3;i++)

{if(yy==ban.coor[i][1]-6) if(xx>=ban.coor[i][0])

if(xx<=ban.coor[i][0]+16)

//if((yy==ban.coor[0][1]-1&&xx>=ban.coor[0][0]&&xx<=ban.coor[0][0]+16)||(yy==ban.coor[1][1]-1&&xx>=ban.coor[1][0]&&xx<=ban.coor[1][0]+16)||(yy==ban.coor[2][1]-1&&xx>=ban.coor[2][0]&&xx<=ban.coor {drawman(xx,yy+2,0);

yy=ban.coor[i][1]-6;goto a1; }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(ban.coor[i][0]+0,ban.coor[i][1],ban.coor[i][0]+16,ban.coor[i][1]+2,1,0);

//if(cnt%sban==1)

for(i=0;i<3;i++) {ban.coor[i][1]-=2;

drawRectangle(ban.coor[i][0]+0,ban.coor[i][1],ban.coor[i][0]+16,ban.coor[i][1]+2,1,1); }

for(i=0;i<3;i++)

{if(yy==ban.coor[i][1]-4) if(xx>=ban.coor[i][0])

if(xx<=ban.coor[i][0]+16) yy=ban.coor[i][1]-6; } }

//{if(cnt%sdown==1)

//yy+=2;} //[2][0]+16))

{//if(cnt%sban==1) //yy+=2; }

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

/********************************clean and draw ban****************************** for(i=0;i<3;i++) {

drawRectangle(ban.coor[i][0]+0,ban.coor[i][1]-2,ban.coor[i][0]+16,ban.coor[i][1],1,1); }

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

//************************换坐标******************************one if(ban.coor[2][1]==0) {ban.number=2;

ban.coor[2][0]=ban.coor[1][0]; ban.coor[1][0]=ban.coor[0][0]; ban.coor[2][1]=ban.coor[1][1]; ban.coor[1][1]=ban.coor[0][1]; }

//************************************************************one /********************画吃的*************************one if(ban.coor[0][1]==3) {if(big==3)

{ drawRectangle(ban.coor[0][0]+8,ban.coor[0][1]-6,ban.coor[0][0]+11,ban.coor[0][1]-3,1,0);

drawRectangle(ban.coor[0][0]+8,ban.coor[0][1]-4,ban.coor[0][0]+11,ban.coor[0][1]-1,1,1); }else if(big2==10)

{drawyuan(ban.coor[0][0]+8,ban.coor[0][1]-6,ban.coor[0][0]+11,ban.coor[0][1]-3,2,0);

drawyuan(ban.coor[0][0]+8,ban.coor[0][1]-4,ban.coor[0][0]+11,ban.coor[0][1]-1,2,1); } }

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

//********************************gameover************************************** if(life<1) {

Lcd_flash(500,5);

drawpicfree(0,0,15,63,*over);

flag.gameover=1 ; flag.start=0 ;

//应该加入显示“您的最终得分为:XXXX,欢迎再次尝试“ //goto start; }

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

//***********************************score******************************************** scocnt++;

if(yy>||yy<0) {life-=1; mannum=0; }

if(scocnt==10) {score+=5; guancnt+=1; scocnt=0;

drawpicfree(0,,3,61,*clearnmin); drawnum(2,,score,1); }

if(guancnt==100) {guan+=1; guancnt=0;

if(sban>1) sban-=1;

WriteCom(0x01); //清屏 drawpicfree(0,0,15,63,*sj); while(flg < 8);

Set_Draw(); guanstart=0; mannum=0; }

//************************************************************************************** //Delay(1000);

//********************************边栏显示

****************************************** //WriteCom(0x01);

//WriteCom(0x01);

//WriteCom(0x01);

drawpicfree(6,18,9,25,*clearnmin); drawnum1(114,18,life,1);

//************************************************************************** }}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo6.com 版权所有 湘ICP备2023023988号-11

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务