跪求VC6.0下的c语言版贪吃蛇代码

我找到一个发给你。

# include & ltstdio.h & gt

# include & ltconio.h & gt

# include & ltstdlib.h & gt

# include & ltbios.h & gt

#define KEY_UP 0x48

#define KEY_LEFT 0x4B

#define KEY_RIGHT 0x4D

#define KEY_DOWN 0x50

#定义ESC 0x011b

const int gamespeed = 90000/*自己调整游戏速度*/

结构点

{

int x;

int y;

}

p[100];

结构点FD;

Void p_frame() /* boundary */

{

int I;

printf(" \ n \ t \ t ");

for(I = 0;我& lt41;i++)

printf(" = ");

printf(" \ n ");

for(I = 0;我& lt20;i++)

printf(" \ t \ t | \ t \ t \ t \ t | \ n ");

printf(" \ t \ t ");

for(I = 0;我& lt41;i++)

printf(" = ");

}

Void print(int n)/* output snake */

{

int I;

clr SCR();

p _ frame();

gotoxy(fd.x,FD . y);

printf(“@”);

for(I = 0;我& lt= n;i++)

{

gotoxy(p[i]。x,p[i]。y);

printf(" * ");

}

}

Int gameover(int n)/*你咬自己了吗*/

{

int I;

for(I = 0;我& ltn-1;i++)

如果(p[i]。x==p[n]。x & amp& ampp[i]。y==p[n]。y)

返回1;

返回0;

}

Void slp() /*这是我自己的图*/

{

int a=40,b=20,I,t,x,y;

x = 16;

y = 2;

for(t = 0;t & lt50;t++)

{

if(t%4==0) {

for(I = 0;我& lta;i++){

gotoxy(x++,y);

printf(" * ");

}

a-;

}

其他

if(t%4==1){

for(I = 0;我& ltb;i++){

gotoxy(x,y++);

printf(" * ");

}

B-;

}

其他

if(t%4==2){

for(I = 0;我& lta;i++){

gotoxy(x -,y);

printf(" * ");

}

a-;

}

其他

if(t%4==3){

for(I = 0;我& ltb;i++){

gotoxy(x,y-);

printf(" * ");

}

B-;

}

延迟(gamespeed);

}

}

Void prover(int n)/*结尾输出*/

{

SLP();/*结尾*/

clr SCR();

p _ frame();

gotoxy(23,8);

printf("Game Over T_T .你已经得到了%d ",n+1);

gotoxy(23,9);

printf("继续?(y/n)");

}

Voidcalculate (int * px,int * py,int * pn)/*计算并更新每个节点的位*/

{

int i,n,tx,ty;

n = * pn

tx = * px

ty = * py

if(tx & lt;17)tx = 57;

else if(tx & gt;56)tx = 17;

if(ty & lt;= 1)ty = 22;

else if(ty & gt;22)ty = 2;

if(tx = = FD . x & amp;& ampty==fd.y)

{

n++;

p[n]。x = fd.x

p[n]。y = fd.y

printf(" \ a ");

FD . x = rand()% 39+18;

FD . y = rand()% 20+3;

}

其他

{

for(I = 0;我& ltn;i++)

{

p[i]。x=p[i+1]。x;

p[i]。y=p[i+1]。y;

}

p[n]。x = tx

p[n]。y = ty

}

* pn = n;

* px = tx

* py = ty

}

void main()

{

int n,tx,ty,f=1,flag,game/*当前蛇的长度,x,y记录改变后的蛇头*/

int *pn,*px,* py

char键;

pn = & ampn;

px = & amptx;

py = & ampty;

n = 1;/*蛇身0~n*/

FD . x = rand()% 20+17;/*初始形状太*/

FD . y = rand()% 17+3;

p[0]。x = 20

p[0]。y = 3;

tx=p[1]。x = 21;

ty=p[1]。y = 3;

flag = 0;/*记录无效的反向键*/

while(1)

{

而(!Khit ())/*没有键盘消息*/

{

开关(f)

{

案例1:

ty++;

打破;

案例二:

ty-;

打破;

案例三:

tx-;

打破;

案例4:

tx++;

打破;

}

计算(px,py,pn);

打印(n);

睡眠(1);

}/*有一条消息*/

flag = 0;

key = getch();/* key = BIOS key(0);接收按钮*/

开关(钥匙)

{

案例关键点_向下:

如果(f!=2){

f = 1;

ty++;

flag = 1;

}

打破;

案例索引_UP:

如果(f!=1){

f = 2;

ty-;

flag = 1;

}

打破;

案例关键字_左:

如果(f!=4){

f = 3;

tx-;

flag = 1;

}

打破;

案例关键字_右:

如果(f!=3){

f = 4;

tx++;

flag = 1;

}

打破;

}

if(key = = ' ')break;

If(flag) /*按钮有效*/

{

计算(px,py,pn);

打印(n);

延迟(gamespeed);

}

/*游戏*/

if(gameover(n))

{

证明人;

key = getch();

if(key=='n ')

打破;

Else /*再次播放*/

{

n = 1;

ty=p[1]。y;

tx=p[1]。x;

}

}

}

}

源文章地址:

/suli pol/blog/item/514443 b6b 39612f 830 add 16c . html