- 注册时间
- 2005-9-12
- 最后登录
- 1970-1-1
|
int tx[900],ty[900],pos[32][16],xs[41];//tx,ty用来记录蛇走过的坐标,
char food[]=
{
0xD8,0xA8,0x50,0xA8,0xD8
};//图片
char body[]=
{
0x70,0xD8,0xA8,0xD8,0x70
};
void zt(){
getchar();
}
void main(){
int x,y,i,l,o,now,dir,xx,yy,k,sj;
char c,ch;
ClearScreen();
for(;;){
c=Inkey();
if(c==27)exit(0);
if(c==20){now=1;if(!(dir==2))dir=now;}
if(c==21){now=2;if(!(dir==1))dir=now;}
if(c==22){now=3;if(!(dir==4))dir=now;}
if(c==23){now=4;if(!(dir==3))dir=now;}
if(c=='p')zt();//键盘控制反方向时不通过
if(dir==1){y--;if(y==0)y=16;}
if(dir==2){y++;if(y==16)y=0;}
if(dir==3){x++;if(x==32)x=0;}
if(dir==4){x--;if(x==0)x=32;}
if(pos[x][y]==1){
Block(x*5,y*5,x*5+5,y*5+5,2); Refresh();
Delay(120);getchar();
exit(0);
}//蛇撞到自身时退出
if(pos[x][y]==0){
pos[x][y]=1;
}//蛇经过的坐标
l++;tx[l]=x;ty[l]=y;
if(pos[x][y]==2){
k=k+1;//增加蛇的长度
pos[x][y]=1;
i=0;
}
WriteBlock(x*5,y*5,5,5,1,body);画蛇
if(l>=899)l=0;//变量控制
o=l-k-3;
if(o<0)o=o+900;
if(i==0){
api:
xx=rand()%32;yy=rand()%16;
if(pos[xx][yy]==1)goto api;
WriteBlock(xx*5,yy*5,5,5,1,food);
pos[xx][yy]=2;
i=1;
}//食物
Block(tx[o]*5,ty[o]*5,tx[o]*5+5,ty[o]*5+5,0);//清尾
pos[tx[o]][ty[o]]=0;
Refresh();
Delay(88);
}
}
可以实现画蛇和吃豆
其他功能没有
很简便,原理就是这样~
没优化的,应可以运行
[ 本帖最后由 xintu1987 于 2008-1-5 17:20 编辑 ] |
|