2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > c语言双人贪吃蛇小游戏代码 关于C 双人贪吃蛇显示的问题

c语言双人贪吃蛇小游戏代码 关于C 双人贪吃蛇显示的问题

时间:2020-01-22 01:31:59

相关推荐

c语言双人贪吃蛇小游戏代码 关于C 双人贪吃蛇显示的问题

该楼层疑似违规已被系统折叠隐藏此楼查看此楼

单人模式完美运行

但是双人却有很大的问题

一条蛇能显示,另一条却被遮盖了,只能在动的时候显示一下

猜测是背景遮盖的问题,可改了好久却没有成功,求助一下。

void Play2(void)

{

struct Snake snake1,snake2;

struct Food food1,food2;

srand((unsigned long)time(0));

food1.flag = 1;

food2.flag = 1;

snake1.life = 0;

snake2.life = 0;

snake1.dir = 1;

snake2.dir = 1;

snake1.x[0] = 150;

snake1.y[0] = 240;

snake1.x[1] = 140;

snake1.y[1] = 240;

snake2.x[0] = 450;

snake2.y[0] = 240;

snake2.x[1] = 440;

snake2.y[1] = 240;

snake1.node = 2;

snake2.node = 2;

do

{

while(!kbhit())

{

if(food1.flag==1)

do

{

food1.x = rand()%520+60;

food1.y = rand()%370+60;

food1.flag=0;

}while(food1.x%10!=0||food1.y%10!=0);

if(food2.flag==1)

do

{

food2.x = rand()%520+60;

food2.y = rand()%370+60;

food2.flag=0;

}

while(food2.x%10!=0||food2.y%10!=0);

if(food1.flag==0)

{

setcolor(GREEN);

setlinestyle(3,0,3);

rectangle(food1.x,food1.y,food1.x+10,food1.y+10);

}

if(food2.flag==0)

{

setcolor(GREEN);

setlinestyle(3,0,3);

rectangle(food2.x,food2.y,food2.x+10,food2.y+10);

}

for(i=snake1.node-1;i>0;i--)

{

snake1.x[i]=snake1.x[i-1];

snake1.y[i]=snake1.y[i-1];

}

for(i=snake2.node-1;i>0;i--)

{

snake2.x[i]=snake2.x[i-1];

snake2.y[i]=snake2.y[i-1];

}

switch(snake1.dir)

{

case 1:

snake1.x[0]+=10;

break;

case 2:

snake1.x[0]-=10;

break;

case 3:

snake1.y[0]+=10;

break;

case 4:

snake1.y[0]-=10;

break;

}

switch(snake2.dir)

{

case 1:

snake2.x[0]+=10;

break;

case 2:

snake2.x[0]-=10;

break;

case 3:

snake2.y[0]+=10;

break;

case 4:

snake2.y[0]-=10;

break;

}

for(i=3;i

{

if(snake1.x[i]==snake1.x[0]&&snake1.y[i]==snake1.y[0])

{

Gameover();

snake1.life=1;

break;

}

}

if(snake1.x[0]<60||snake1.x[0]>590||snake1.y[0]<50||snake1.y[0]>440)

{

Gameover();

snake1.life=1;

break;

}

if(snake1.x[0]==food1.x&&snake1.y[0]==food1.y)

{

setcolor(0);

rectangle(food1.x,food1.y,food1.x+10,food1.y+10);

snake1.node++;

food1.flag=1;

speed-=50;

}

setcolor(4);

for(i=0;i

{

setlinestyle(0,0,1);

rectangle(snake1.x[i],snake1.y[i],snake1.x[i]+10,snake1.y[i]+10);

}

delay(speed);

setcolor(0);

rectangle(snake1.x[snake1.node-1],snake1.y[snake1.node-1],snake1.x[snake1.node-1]+10,snake1.y[snake1.node-1]+10);

}

for(i=3;i

{

if(snake2.x[i]==snake2.x[0]&&snake2.y[i]==snake2.y[0])

{

Gameover();

snake2.life=1;

break;

}

}

if(snake2.x[0]<60||snake2.x[0]>590||snake2.y[0]<50||snake2.y[0]>440)

{

Gameover();

snake2.life=1;

break;

}

if(snake2.x[0]==food2.x&&snake1.y[0]==food2.y)

{

setcolor(0);

rectangle(food2.x,food2.y,food2.x+10,food2.y+10);

snake2.node++;

food2.flag=1;

speed-=50;

}

setcolor(4);

for(i=0;i

{

setlinestyle(0,0,1);

rectangle(snake2.x[i],snake2.y[i],snake2.x[i]+10,snake2.y[i]+10);

}

delay(speed);

setcolor(0);

rectangle(snake2.x[snake2.node-1],snake2.y[snake2.node-1],snake2.x[snake2.node-1]+10,snake2.y[snake2.node-1]+10);

if(snake1.life==1)

{break;}

if(snake2.life==1)

{break;}

key=bioskey(0);

if(key==UP&&snake1.dir!=4)

snake1.dir=3;

if(key==DOWN&&snake1.dir!=3)

snake1.dir=4;

if(key==RIGHT&&snake1.dir!=2)

snake1.dir=1;

if(key==LEFT&&snake1.dir!=1)

snake1.dir=2;

if(key==W&&snake2.dir!=4)

snake2.dir=3;

if(key==S&&snake2.dir!=3)

snake2.dir=4;

if(key==A&&snake2.dir!=2)

snake2.dir=1;

if(key==A&&snake2.dir!=1)

snake2.dir=2;

}while(key!=ESC);

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。