蛇代码

TC下的代码

# 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);

}