蛇代码
# include & ltdos.h & gt
# include & ltalloc.h & gt
# include & ltstdlib.h & gt
# include & ltstdio.h & gt
#包含“graphics.h”
# include & ltmath.h & gt
typedef结构
{
int x;
int y;
}节点;
结构体
{
节点信息[40];
int长度;
}蛇;
充电灯[60][48];
void main()
{
int search(int m,int n);
虚空光(int m,int n,int color);
int settle(int key);
char met = 1;
int i,j,direction,key1,key2=0,rm,rn;
int driver=DETECT,mode = 0;
init graph(& amp;司机& amp模式,“”;
set color(10);
矩形(0,0,580,450);
snake . length = 3;
for(I = 0;我& lt60;i++)
for(j = 0;j & lt48;j++)
light[I][j]= 0;
snake.info[0]。x = 32
snake.info[1]。x = 32
snake.info[2]。x = 32
snake.info[0]。y = 24
snake.info[1]。y = 25
snake.info[2]。y = 26
for(I = 0;我& lt3;i++)
Light(snake.info[i].x,snake.info[i]。y,8);
做
{
if(met==1)
{
做
{
RM = random(57);
rn = random(44);
met = 0;
}while(search(rm,rn));
}
光(rm,rn,10);
如果(!bioskey(1))
{
key 1 = key 2;
}
其他
{
key 1 = BIOS key(0);
if((key 2 = = 0x4b 00 & amp;& ampkey 1 = = 0x4d 00)| |(key 1 = = 0x4b 00 & amp;& ampkey 2 = = 0x4d 00)| |(key 1 = = 0x 4800 & amp;& ampkey 2 = = 0x 5000)| |(key 1 = = 0x 5000 & amp;& ampkey 2 = = 0x 4800)| |(key 1 = = 0x 5000 & amp;& ampkey2==0))
key 1 = key 2;
else key 2 = key 1;
}
if(key 1)met = settle(key 1);
if(met==2)返回;
for(I = 0;我& lt蛇.长度;i++)
Light(snake.info[i].x,snake.info[i]。y,8);
for(I = 0;我& lt13-snake . length * 0.3;i++)延时(12000);
} while(snake . length & lt;40);
getch();
}
无效光(中间,中间n,中间颜色)
{
setfillstyle(1,颜色);
bar(10*m,10*n,10*m+8,10 * n+8);
if(color = = 8)light[m][n]= 2;
if(color = = 10)light[m][n]= 1;
if(color = = 0)light[m][n]= 0;
}
int search(int m,int n)
{
if(light[m][n]==2)
返回(1);
返回0;
}
int settle(int key)
{
int i,rx,ry;
rx = snake . info[snake . length-1]。x;ry = snake . info[snake . length-1]。y;
for(I = snake . length-1;我& gt0;我-)
{
snake.info[i]。x=snake.info[i-1]。x;
snake.info[i]。y=snake.info[i-1]。y;
}
开关(钥匙)
{
案例0x4800:
snake.info[i]。y-;
打破;
案例0x5000:
snake.info[i]。y++;
打破;
案例0x4b00:
snake.info[i]。x-;
打破;
案例0x4d00:
snake.info[i]。x++;
打破;
}
if(light[snake.info[i].x][snake.info[i]。y]==1)
{
snake . length++;
snake . info[snake . length-1]。x = rx
snake . info[snake . length-1]。y = ry
Light(snake.info[i].x,snake.info[i]。y,0);
返回(1);
}
if(snake.info[i].x & gt58||snake.info[i]。y & gt44||snake.info[i]。x & lt0||snake.info[i]。y & lt0||light[snake.info[i]。x][snake.info[i]。y]==2)
{
返回(2);
}
Light(rx,ry,0);
return(0);
}