nokia游戏HTML5小游戏,用arduino做贪吃蛇小游戏,用Nokia5110的显示屏,Joystick Shieled......

程序代码是这样的:添加了库文件的

#include

extern  byte X_MAX=82;

extern  byte Y_MAX=46;

extern unsigned char TinyFont[];

extern unsigned char SmallFont[];

byte DotX,DotY;

byte SnakeBody[100][2]={{10,16},{10,18},{10,20}};

byte EatSelf=0;

byte NewFood=0;

byte SnakeLength=3;

long score=0;

byte FoodX=30,FoodY=30;

byte Direct=2;

byte LastDirect=2

byte Steptine=5;

#define A digitalRead(2)

#define B digitalRead(3)

#define C digitalRead(4)

#define D digitalRead(5)

#define BL 6

LCD5110 LCD(9,10,11,13,12);

void setup()

{

analogWrite(BL,0);

LCD.InitLCD();

LCD.setFont(SmallFont);

DisplayStart();

PrintFrame();

randomSeed(analogRead(7));

CreatFood();

}

void loop()

{

MoveSnack();

JudgeEatSelf();

}

void DisplayStart()

{

LCD.clrScr();

LCD.print("Snake",CENTER,20);

LCD.update();

delay(2000);

LCD.clrScr();

}

void DisplayGameOvor()

{

LCD.clrScr();

for(byte y=48;y>20;y--)

{

LCD.print("GameOvor",CENTER,y);

LCD.update();

delay(50);

}

delay(5000);

LCD.clrScr();

}

void PrintFrame()

{

LCD.clrScr();

LCD.drawRect(0,6,83,47);

LCD.drawRect(1,7,82,46);

LCD.setFont(TinyFont);

LCD.print("Score:",0,0);

LCD.printNumI(0,24,0,3,'');

LCD.update();

}

void CreatDot(byte x,byte y)

{

LCD.drawRect(x,y,+1,y+1);

LCD.update();

}

void ClearDot(byte x,byte y)

{

LCD.clrRect(x,y,+1,y+1);

LCD.update();

}

byte IsFoodFit(byte X,byte Y)

{

byte WhetherFit=1;

for(int i=0;i

{

if(X=SnakeBody[i][0]&&Y=SnakeBody[i][1]||(X%2!=0)||(Y%2!=0))

{

WhetherFit=0;

break;

}

}

return WhetherFit;

}

void RandomFoodPlace()

{

FoodX=random(2,81);

FoodY=random(8,45);

}

void CreatFood()

{

ClearDot(FoodX,FoodY);

while(!IsFoodFit(FoodX,FoodY))RandomFoodPlace();

CreatDot(FoodX,FoodY);

}

void DisplaySnake()

{

int i;

for(i=0;i

{

CreatDot(SnakeBody[i][0],SnakeBody[i][1]);

}

}

void ClearSnake()

{

int i;

for(i=0;i

{

ClearDot(SnakeBody[i][0],SnakeBody[i][1]);

}

}

void MoveSnake()

{

if(A==0)           Direct=0;

elseif(B==0)       Direct=1;

elseif(C==0)       Direct=2;

elseif(D==0)       Direct=3;

if((LastDirect+Direct)%2==0)

Direct=LastDirect;

LastDirect=Direct;

if(SnakeBody[SnakeLength-1][0]==FoodX&&SnakeBody[SnakeLength-1][1]==FoodY)

{

SnakeLength++;

score++;

NewFood=1;

}

if(NewFood==1)

{

CreatFood();

NewFood=0;

switch(Direct)

{

case 0:         SnakeBody[SnakeLength-1][0]=SnakeBody[SnakeLength-2][0];

SnakeBody[SnakeLength-1][1]=SnakeBody[SnakeLength-2][1]-2;

break:

case 1:         SnakeBody[SnakeLength-1][0]=SnakeBody[SnakeLength-2][0]+2;

SnakeBody[SnakeLength-1][1]=SnakeBody[SnakeLength-2][1];

break:

case 2:         SnakeBody[SnakeLength-1][0]=SnakeBody[SnakeLength-2][0];

SnakeBody[SnakeLength-1][1]=SnakeBody[SnakeLength-2][1]+2;

break:

case 3:         SnakeBody[SnakeLength-1][0]=SnakeBody[SnakeLength-2][0]-2;

SnakeBody[SnakeLength-1][1]=SnakeBody[SnakeLength-2][1];

break:

}

}

else

{

switch(Direct)

{

case 0:

{

for(int i=0;i

{

SnakeBody[i][0]=SnakeBody[i+1][0];

SnakeBody[i][1]=SnakeBody[i+1][1];

}

SnakeBody[SnakeLength-1][1]=SnakeBody[SnakeLength-1][1]-2;

}

break;

case 1:

{

for(int i=0;i

{

SnakeBody[i][0]=SnakeBody[i+1][0];

SnakeBody[i][1]=SnakeBody[i+1][1];

}

SnakeBody[SnakeLength-1][0]=SnakeBody[SnakeLength-1][0]+2;

}

break;

case 2:

{

for(int i=0;i

{

SnakeBody[i][0]=SnakeBody[i+1][0];

SnakeBody[i][1]=SnakeBody[i+1][1];

}

SnakeBody[SnakeLength-1][1]=SnakeBody[SnakeLength-1][1]+2;

}

break;

case 3:

{

for(int i=0;i

{

SnakeBody[i][0]=SnakeBody[i+1][0];

SnakeBody[i][1]=SnakeBody[i+1][1];

}

SnakeBody[SnakeLength-1][0]=SnakeBody[SnakeLength-1][0]-2;

}

break;

}

}

for(byte i=0;i

DisplaySnake();

LCD.printNumI(score,24,0,3,'');

ClearSnake();

}

void JudgeEatSelf()

{

for(int i;i

{

if(SnakeBody[SnakeLength-1][0]==SnakeBody[i][0]&&SnakeBody[SnakeLength-1][1]==SnakeBody[i][1])

{

DisplayGameOver();

break;

}

}

if((SnakeBody[SnakeLength-1][0]<=0)||(SnakeBody[SnakeLength-1][0]>=X_MAX)||(SnakeBody[SnakeLength-1][1]<=6)||(SnakeBody[SnakeLength-1][1]>=Y_MAX))

{

DisplayGameOver();

}

}

不知道为什么有错误,并且实现不了想要的内容

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值