欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
大神們,可以看下我單片機貪吃蛇代碼,為什么我的蛇不能運行啊
[打印本頁]
作者:
tangdashao
時間:
2020-11-25 15:37
標題:
大神們,可以看下我單片機貪吃蛇代碼,為什么我的蛇不能運行啊
#include<reg52.h>
#include<intrins.h>
#include<stdlib.h>
#define uint unsigned int
#define uchar unsigned char
#define SHAKE 20//蛇的最大長度
sbit SHANG=P3^4;
sbit XIA=P3^5;
sbit ZUO=P3^6;
sbit YOU=P3^7;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code ly[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; //P0控制y亮
uchar code lx[]={0xfe,0xfd,0xfb,0xf7,0x7f,0xbf,0xdf,0xef};//P2控制x亮
uchar xx[20]={0};//用來存蛇的x坐標
uchar yy[20]={0};//用來存蛇的y坐標
uchar length;//蛇的長度
uchar direction;//蛇的方向
uchar foodx,foody;
void delay(uchar z)//延遲函數
{
uchar x,y;
for(x=z;x>0;x--)
{
for(y=110;y>0;y--)
{};
}
}
void close()//關掉數碼管
{
dula=1;
P0=0x00;
dula=0;
}
void init()//蛇的初始化
{
length=1;
xx[0]=0;
yy[0]=0;
direction=2;
}
void move()//蛇的移動
{
uchar L=length-1;
for(L;L>0;L--)
{
xx[L]=xx[L-1];
yy[L]=yy[L-1];
}
switch(direction)//根據運動方向控制坐標
{
case 1:
yy[0]++;
break;
case 2:
yy[0]--;
break;
case 3:
xx[0]--;
break;
case 4:
xx[0]++;
break;
default:
break;
}
}
void keyword()//通過按鍵控制運動方向
{
if(SHANG==0)//上
{
delay(1000);
if(SHANG==0)
{
if(direction==3|direction==4)
direction=1;
}
while(!SHANG);
}
if(XIA==0)//下
{
delay(1000);
if(XIA==0)
{
if(direction==3|direction==4)
direction=2;
}
while(!XIA);
}
if(ZUO==0)//左
{
delay(1000);
if(ZUO==0)
{
if(direction==1|direction==2)
direction=3;
}
while(!ZUO);
}
if(YOU==0)//右
{
delay(1000);
if(YOU==0)
{
if(direction==1|direction==2)
direction=4;
}
while(!YOU);
}
}
void food()//創(chuàng)造食物
{
uchar i;
foodx=rand()%7;
foody=rand()%7;
for(i=0;i<length;i++)
{
if((xx[i]==foodx)&&(yy[i]==foody))
{
food();
}
}
}
void grow()//蛇的增長函數
{
if((xx[0]==foodx)&&(yy[0]==foody))
{
food();
xx[length]=xx[length-1];
yy[length]=yy[length-1];
length++;
}
}
void light()//點亮蛇和食物
{
uchar i;
for(i=0;i<length;i++)
{
P2=lx[xx[i]];
P0=ly[yy[i]];
delay(10);
P2=lx[foodx];
P0=ly[foody];
delay(10);
}
}
void pick()//判斷蛇是否撞墻和撞到自己
{
uchar i;
if(xx[0]>7||yy[0]>7)
{
while(1);
}
for(i=4;i<length;i++)
{
if(xx[0]==xx[i]&&yy[0]==yy[i])
{
while(1);
};
}
}
void main()
{
init();
move();
while(1)
{
close();
light();
food();
pick();
grow();
keyword();
}
}
復制代碼
作者:
51hei團團
時間:
2020-11-25 15:50
你這個程序沒有錯誤,可能是你硬件的問題吧,由于沒有電路圖也不好分析
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1