51單片機(jī)+8*8點(diǎn)陣實(shí)現(xiàn)的貪食蛇源代碼
電路圖和單片機(jī)仿真文件下載:http://www.51hei.com/bbs/dpj-20604-1.html
下面是源代碼:
#include
#define uchar unsigned char
#define SNAKE 20 //最大長度
#define TIME 50 //顯示延時(shí)時(shí)間
#define SPEED 71 //速度控制
//#define keyenable 1
sbit keyenable=P3^6;//方向使能
/*sbit keyx=P0^1;//左右
sbit keyy=P0^2;//上下*/
//sbit up=P0^0;
sbit up=P3^3; //down
sbit down=P3^1;
sbit right=P3^2;
sbit left=P3^4;
uchar x[SNAKE+1];
uchar y[SNAKE+1];
uchar time,n,i,e; //延時(shí)時(shí)間,當(dāng)前蛇長,通用循環(huán)變量,當(dāng)前速度
char addx,addy; //位移偏移量
/********************
延時(shí)程序
*********************/
void delay(char MS)
{
char us,usn;
while(MS!=0)
{
usn = 0;
while(usn!=0)
{
us=0xff;
while (us!=0){us--;};
usn--;
}
MS--;
}
}
/*******************************************
判斷碰撞
*******************************************/
bit knock()
{bit k;
k=0;
if(x[1]>7||y[1]>7)k=1; //撞墻
for(i=2;i
}
/*****************
上下左右鍵位處理
*****************/
void turnkey()// interrupt 0 using 2
{//up=1;
if(keyenable)
{
if(left){addy=0;if(addx!=1)addx=-1; else addx=1;}
if(right){addy=0;if(addx!=-1)addx=1; else addx=-1;}
if(up){addx=0;if(addy!=-1)addy=1; else addy=-1;}
if(down){addx=0;if(addy!=1)addy=-1; else addy=1;}
/*if(keyy)
{addy=0; //左右
if(keyx)if(addx==-1)addx=-1; else addx=1; //左
else
if(addx==1)addx=1; else addx=-1; //右
}
else
{addx=0; //上下
if(keyx)if(addy==1)addy=1; else addy=-1; //下
else
if(addy==-1)addy=-1; else addy=1; //上
} */
}
}
評(píng)論