#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define SNAKE 30
void delay(uint t);
void display(void);
bit knock(void);
void eat(void);
void move(void);
void key_process(uchar jz);
void init(void);
uchar keyscan();
sbit spk=P1^0;
uchar KS,L,t,jibie,jibie1;
uchar x[SNAKE+1],y[SNAKE+1],guzhangx[4],guzhangy[4];
uchar code zuanhuan[9]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
char addx,addy;
uchar keyscan()
{
uchar temp,num;
P3=0xfd;
temp=P3&0xf0;
if(temp!=0xf0)
{
temp=P3;
if(temp==0xbd)num='>';
}
P3=0xfb;
temp=P3&0xf0;
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xdb:num='+';break;
case 0xbb:
jibie1++;
if(jibie1==3)jibie1=1;
if(jibie1==1)num='@';
if(jibie1==2)num='#';break;
case 0x7b:num='-';break;
}
}
P3=0xf7;
temp=P3&0xf0;
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xd7:num='=';break;
case 0xb7:num='<';break;
case 0x77:num='!';break;
}
}
return num;
}
void init_t0() interrupt 1
{
key_process(keyscan());
TH0=0xf8;
TL0=0x30;
}
void main()
{
init();
while(1)
{
display();
if(KS) move();
if(knock()) break;
eat();
}
}
void init(void)
{
TMOD=0x01;
TH0=0xf8;
TL0=0x30;
TR0=1;
ET0=1;
EA=1;
P2=0xff;
P3=0x00;
L=3;t=100;
x[0]=4;y[0]=4;
x[1]=8;y[1]=3;
x[2]=8;y[2]=2;
x[3]=8;y[3]=1;
guzhangx[0]=2;guzhangy[0]=6;
guzhangx[1]=2;guzhangy[1]=7;
guzhangx[2]=3;guzhangy[2]=6;
guzhangx[3]=3;guzhangy[3]=7;
addx=0;addy=1;
}
void delay(uint t)
{
uchar i;
while(t--)
for(i=0;i<122;i++);
}
void display(void)
{
uchar i,j;
for(j=0;j<t;j++)
{
for(i=0;i<L+1;i++)
{
P2=~zuanhuan[y[i]];
P0=zuanhuan[x[i]];
delay(1);
}
if(jibie)for(i=0;i<4;i++)
{
P2=~zuanhuan[guzhangy[i]];
P0=zuanhuan[guzhangx[i]];
delay(1);
}
}
}
bit knock(void)
{
uchar i;
if((x[1]>8)||(y[1]>8)) return 1;
if(jibie)if((x[1]==guzhangx[0])&&(y[1]==guzhangy[0])
||(x[1]==guzhangx[1])&&(y[1]==guzhangy[1])
||(x[1]==guzhangx[2])&&(y[1]==guzhangy[2])
||(x[1]==guzhangx[3])&&(y[1]==guzhangy[3]))
return 1;
for(i=2;i<L+1;i++)
if((x[1]==x[i])&&(y[1]==y[i])) return 1;
}
void eat(void)
{
if(x[0]==x[1]&&y[0]==y[1])
{
L++;
if(L==4)t=70;
if(L==7)t=48;
if(L==9)t=33;
if(L==11)t=23;
if(L==13)t=18;
if(L==15)t=14;
if(L==17)t=10;
if(L==19)t=6;
if(L==21)t=2;
guzhangx[0]=x[L-1]-1;guzhangy[0]=y[L-1]+1;
guzhangx[1]=guzhangx[0];guzhangy[1]=guzhangy[0]+1;
guzhangx[2]=guzhangx[1]+1;guzhangy[2]=guzhangy[0];
guzhangx[3]=guzhangx[2];guzhangy[3]=guzhangy[1];
x[0]=x[L-1]+1;y[0]=y[L-1]-1;
if((x[0]>8)||(y[0]>8)||(x[0]<1)||(y[0]<1)
||(x[0]==guzhangx[0])&&(y[0]==guzhangy[0])
||(x[0]==guzhangx[1])&&(y[0]==guzhangy[1])
||(x[0]==guzhangx[2])&&(y[0]==guzhangy[2])
||(x[0]==guzhangx[3])&&(y[0]==guzhangy[3]))
{
x[0]=x[L-1];y[0]=y[L-1];
}
}
}
void move(void)
{
uchar i;
for(i=L;i>1;i--)
{
x[i]=x[i-1];
y[i]=y[i-1];
}
x[1]=x[2]+addx;
y[1]=y[2]+addy;
}
void key_process(uchar jz)
{
switch(jz)
{
case '-':
{
addx=0;
if(addy==1) addy=1;
else addy=-1;
break;
}
case '+':
{
addx=0;
if(addy==-1) addy=-1;
else addy=1;
break;
}
case '>':
{
addy=0;
if(addx==1) addx=1;
else addx=-1;
break;
}
case '<':
{
addy=0;
if(addx==-1) addx=-1;
else addx=1;
break;
}
case '@':jibie=1;break;
case '#':jibie=0;break;
case '!':KS=1;break;
case '=':KS=0;break;
default:break;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
单片机c语言程序设计
共17个文件
lst:2个
bak:2个
obj:2个
需积分: 0 0 下载量 96 浏览量
2009-12-22
17:01:33
上传
评论
收藏 54KB RAR 举报
温馨提示
用at89s52和8*8点阵做的贪吃蛇,设有两关,第一关无障碍物,第二关有障碍物,按键反应灵敏,蛇吃到一个食物之后速度 会随之加速!已经在实验板上运行过,效果和手机上的游戏效果差不多哦!
资源详情
资源评论
资源推荐
收起资源包目录
.rar (17个子文件)
贪吃蛇(第二级有障碍物的)
贪吃蛇.M51 14KB
贪吃蛇_Opt.Bak 1KB
贪吃蛇.Opt 1KB
贪吃蛇(两关).PWI 742B
贪吃蛇.hex 3KB
STARTUP.A51 5KB
贪吃蛇.plg 219B
STARTUP.lst 11KB
贪吃蛇.OBJ 12KB
贪吃蛇(两关).DSN 98KB
贪吃蛇.Uv2 2KB
贪吃蛇.c 6KB
STARTUP.obj 848B
贪吃蛇 10KB
Last Loaded 贪吃蛇(两关).DBK 95KB
贪吃蛇.LST 12KB
贪吃蛇_Uv2.Bak 2KB
共 17 条
- 1
panxiongwen
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- springboot免安装整合Opencv兼容windows和linux.doc
- node.js安装过程
- 使用FastICA算法,进行盲源分离,得出源信号 .zip
- 盲源分离的FASTICA算法程序,对信号进行分离.rar
- MATLAB实现信号的盲源分离~fastICA方法~源信号与混合信号个数均为2~
- C++小游戏(猜数字游戏)
- matlab 独立分量分析 fastica,icaplot,remmean,whiten,盲源分离,去均值,白化处理.zip
- C++ Primer Plus 学习笔记
- 梯控模糊搜索-CRACK
- 湖南科技大学图形图像(王志喜)期末复习参考题往年必考题认真过一遍保底八十
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0