易码技术论坛

 找回密码
 加入易码
搜索
查看: 1063|回复: 0

[源码] 最原始的蛇代码

[复制链接]
发表于 2008-1-5 16:53:49 | 显示全部楼层 |阅读模式
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 编辑 ]
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-27 10:35 , Processed in 0.011602 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表