微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机实现贪食蛇的子程序

51单片机实现贪食蛇的子程序

时间:11-30 来源:互联网 点击:

---------------------------
函数功能:蛇吃到食物处理
调用形式:Snake_Feed();
参数:
返回值:迟到食物返回1 没吃到返回0->判断是否死亡
备注:
---------------------------------------------------------*/
void Snake_Feed(void)
{
uint8 i;
if(snake[snake_size].X==food.X&&snake[snake_size].Y==food.Y)
{
//while(food.S==0)
Creat_Food();//重新产生食物
//snake_foodflag=1;
snake_size++;//蛇身加1
snake_score+=BASIC_SCORE;//游戏得分加上加分基数
snake_speed-=BASIC_SPEED;//游戏速度加上加速基数
if(snake_speed<=0)
snake_speed=1;

if(snake_size==SNAKE_SIZE)//此刻蛇长等于最长时候,通关条件
{
for(i=0;i<=SNAKE_SIZE;i++)
{
SetStatusXY(snake[i].X,snake[i].Y,0);//蛇消隐
}
//清屏幕缓存并显示得分
ClearBuf();
{
Display_5x8(0,0,S_);
Display_5x8(6,0,C_);
Display_5x8(12,0,O_);
Display_5x8(18,0,R_);
Display_5x8(24,0,E_);
}
//下32x8像素显示分数(最长52节,吃50个食物通关,50*10=500分最高)
{
Display_5x8(31-6,8,snake_score%10);
Display_5x8(31-12,8,snake_score%100/10);
Display_5x8(31-18,8,snake_score/100);
}
while(1)
{
for(i=0;i<5;i++)
Display();
DelayMs(255);
if(snake_status==0)
break;
}
}
//return 1;
}
//else return 0;
}

/*---------------------------------------------------------
函数功能:处理蛇的死亡
调用形式:Snake_Die();
参数:
返回值:
备注:
---------------------------------------------------------*/
void Snake_Die(void)
{
uint16 i;

for(i=1;i{
if(snake[0].X==snake[i].X)
{
if(snake[i].Y==snake[0].Y)//死亡
{
ClearBuf();
Display_5x8(0,0,G_);
Display_5x8(6,0,A_);
Display_5x8(12,0,M_);
Display_5x8(18,0,E_);
Display_5x8(0,8,O_);
Display_5x8(6,8,V_);
Display_5x8(12,8,E_);
Display_5x8(18,8,R_);
for(i=0;i<800;i++)
Display();

ClearBuf();
Display_5x8(31-6,8,snake_score%10);
Display_5x8(31-12,8,snake_score%100/10);
Display_5x8(31-18,8,snake_score/100);
Display_5x8(0,0,S_);
Display_5x8(6,0,C_);
Display_5x8(12,0,O_);
Display_5x8(18,0,R_);
Display_5x8(24,0,E_);
while(1)
{
if(!snake_status)
break;
for(i=0;i<100;i++)
Display();
DelayMs(255);
}
break;//连跳
}
}
}
}

/*---------------------------------------------------------
函数功能:游戏进行时
调用形式:Snake_Ing();
参数:
返回值:
备注:
---------------------------------------------------------*/
void Snake_Ing(void)
{
uint8 i;
if(!snake_status)
Snake_Init();
Snake_Step(snake_direct);
Snake_Feed();
Snake_Die();
for(i=0;iDisplay();
}

#endif

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top