日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言多人对战贪吃蛇,双人对战贪吃蛇

發布時間:2023/12/16 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言多人对战贪吃蛇,双人对战贪吃蛇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

雙人對戰貪吃蛇

#include

#include

#include

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define A 0x1e61

#define D 0x2064

#define S 0x1f73

#define W 0x1177

#define ESC 283

#define N 100

long movespeed[5]={40000,20000,10000,8000,5000};/*蛇移動的速度*/

struct snake

{

int x[N];

int y[N];

int knot;/*節數*/

int direction;/*移動方向*/

int live;/* 0活著,1死亡*/

}snake[2];

int food_x,food_y,food_sigh;

int i,max,key,play1score=0,play2score=0,count;

void draw(void) /*左上(47,40),右下(621,361)方框*/

{

setfillstyle(1,9);

bar(47,40,621,49);

bar(47,40,58,370);

bar(47,361,621,370);

bar(611,40,621,370);

setfillstyle(1,10);

bar(0,0,47,479);

bar(0,479,640,370);

bar(621,479,640,0);

bar(0,0,640,40);

}

void Count(void)/*級數,如果級數越高移動越快*/

{

char str[10];

setfillstyle(1,5);

bar(450,15,611,35);

setcolor(GREEN);

settextstyle(0,0,2);

sprintf(str,"count:%d",count);

outtextxy(451,20,str);

}

void printfscore(void)/*輸出分數,每吃一個就加十*/

{

char str1[10];

char str2[10];

setfillstyle(9,12);

bar(250,15,400,35);

setcolor(GREEN);

settextstyle(0,0,2);

sprintf(str1,"play2:%d",play2score);/*play2的分數*/

outtextxy(250,20,str1);

setfillstyle(1,5);

bar(45,15,195,35);

setcolor(GREEN);

sprintf(str2,"play1:%d",play1score);/*play1的分數*/

outtextxy(45,20,str2);

}

void maker(void) /*作者*/

{

char str1[30]={"MAKER:"};

char str2[50]={"WJYang GuiLin!"};

char str3[30]={"Snake GAME"};

setcolor(RED);

settextstyle(0,0,2);

outtextxy(47,420,str1);

settextstyle(0,0,1);

outtextxy(150,428,str2);

settextstyle(0,0,2);

outtextxy(400,420,str3);

}

void gameover(void) /*結束函數*/

{

cleardevice();

Count();

maker();

printfscore();

setcolor(RED);

settextstyle(0,0,5);

outtextxy(150,200,"GAME OVER");

moveto(150,300);

outtextxy(150,300,"^_^^_^^_^");

settextstyle(0,0,5);

}

void gamestard(void)

{

randomize();

food_sigh=1;/*1需要出現,0已經存在*/

{/*蛇1初始*/

snake[0].live=0;/*顯示*/

snake[0].direction=1;/*右*/

snake[0].x[0]=70;/*頭*/

snake[0].y[0]=70;

snake[0].x[1]=80;

snake[0].y[1]=70;

snake[0].knot=3;/*節數*/

}

{/*蛇2初始*/

snake[1].live=0;/*顯示*/

snake[1].direction=1;/*右*/

snake[1].x[0]=70;/*頭*/

snake[1].y[0]=100;

snake[1].x[1]=80;

snake[1].y[1]=100;

snake[1].knot=3;/*節數*/

}

Count();

maker();

printfscore();

while(1)/*沒按鍵就一直循環*/

{

while(!kbhit())

{

if(food_sigh==1)/*需要出現新食物*/

{

food_x=rand()%533+62;

food_y=rand()%294+53;/*出現的位置*/

for(i=0;(i=food_x%10)!=0;i++)/*出現必須在整數的格內,那樣蛇才能吃上*/

food_x++;

for(i=0;(i=food_y%10)!=0;i++)

food_y++;

food_sigh=0;

}

if(food_sigh==0)/*畫出食物*/

{

setfillstyle(1,4);

bar(food_x,food_y,food_x+10,food_y-10);

}

for(i=snake[0].knot-1;i>0;i--)/*蛇1的每個環節往前移動*/

{

snake[0].x[i]=snake[0].x[i-1];

snake[0].y[i]=snake[0].y[i-1];

}

for(i=snake[1].knot-1;i>0;i--)/*蛇2的每個環節往前移動*/

{

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

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

}

switch(snake[0].direction)/*蛇1的方向*/

{

case 1: snake[0].x[0]+=10;break;

case 2: snake[0].x[0]-=10;break;

case 3: snake[0].y[0]-=10;break;

case 4: snake[0].y[0]+=10;break;

}

switch(snake[1].direction)/*蛇2的方向*/

{

case 1: snake[1].x[0]+=10;break;

case 2: snake[1].x[0]-=10;break;

case 3: snake[1].y[0]-=10;break;

case 4: snake[1].y[0]+=10;break;

}

for(i=0;isnake[0].knot?snake[1].knot:snake[0].knot);i++)/*它們相撞就死*/

{

if((snake[0].x[0]==snake[1].x[i]&&snake[1].y[i]==snake[0].y[0])||(snake[0].x[i]==snake[1].x[0]&&snake[0].y[i]==snake[1].y[0]))

{

gameover();

snake[0].live=1;

snake[1].live=1;

break;

}

}

for(i=3;i

{

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

{

gameover();

snake[0].live=1;

break;

}

}

for(i=3;i

{

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

{

gameover();

snake[1].live=1;

break;

}

}

if(snake[0].x[0]<58||snake[0].x[0]>605||snake[0].y[0]<55||snake[0].y[0]>360)/*撞到墻壁*/

{

gameover();

snake[0].live=1;

}

if(snake[1].x[0]<58||snake[1].x[0]>605||snake[1].y[0]<55||snake[1].y[0]>360)/*撞到墻壁*/

{

gameover();

snake[1].live=1;

}

if(snake[0].live==1)

break;

if(snake[1].live==1)

break;

if(snake[0].x[0]==food_x&&snake[0].y[0]==food_y)/*吃到東西*/

{

setfillstyle(1,11);

bar(food_x,food_y,food_x+10,food_y-10);

snake[0].knot++;

food_sigh=1;/*需要出現新的食物*/

play1score+=10;

printfscore();

}

if(snake[1].x[0]==food_x&&snake[1].y[0]==food_y)/*吃到東西*/

{

setfillstyle(1,11);

bar(food_x,food_y,food_x+10,food_y-10);

snake[1].knot++;

food_sigh=1;/*需要出現新的食物*/

play2score+=10;

printfscore();

}

setfillstyle(1,8); /*畫蛇1*/

bar(snake[0].x[0]-1,snake[0].y[0]+1,snake[0].x[0]+11,snake[0].y[0]-11);

setlinestyle(SOLID_LINE,0,THICK_WIDTH);

setcolor(8);

for(i=1;i

rectangle(snake[0].x[i],snake[0].y[i],snake[0].x[i]+10,snake[0].y[i]-10);

setfillstyle(9,4);/*畫蛇2*/

bar(snake[1].x[0],snake[1].y[0],snake[1].x[0]+10,snake[1].y[0]-10);

setfillstyle(11,4);

for(i=1;i

bar(snake[1].x[i],snake[1].y[i],snake[1].x[i]+10,snake[1].y[i]-10);

if(snake[0].knot<=7)/*級數1*/

{

delay(movespeed[0]);

count=1;

}

if(snake[0].knot>7&&snake[0].knot<=11)/*級數2*/

{

delay(movespeed[1]);

count=2;

}

if(snake[0].knot>11&&snake[0].knot<=15)/*級數3*/

{

delay(movespeed[2]);

count=3;

}

if(snake[0].knot>15&&snake[0].knot<=20)/*級數4*/

{

delay(movespeed[3]);

count=4;

}

if(snake[0].knot>20&&snake[0].knot<=N)/*級數5*/

{

delay(movespeed[4]);

count=5;

}

Count();

if(snake[0].knot==8)/*當節數為8時,顯示"GOOD!!"*/

{ setcolor(GREEN);

settextstyle(0,0,5);

outtextxy(230,150,"GOOD!!");

}

if(snake[0].knot==9)/*當節數為9時,除去"GOOD!!"*/

{ setcolor(LIGHTCYAN);

settextstyle(0,0,5);

outtextxy(230,150,"GOOD!!");

}

if(snake[0].knot==12)/*當節數為12時,顯示"GREAD!!"*/

{ setcolor(MAGENTA);

settextstyle(0,0,5);

outtextxy(230,150,"GREAT!!");

}

if(snake[0].knot==13)/*當節數為12時,除去"GREAD!!"*/

{ setcolor(LIGHTCYAN);

settextstyle(0,0,5);

outtextxy(230,150,"GREAT!!");

}

setfillstyle(8,11);/*用背景色涂去蛇2最后一節*/

bar(snake[1].x[snake[1].knot-1],snake[1].y[snake[1].knot-1],snake[1].x[snake[1].knot-1]+10,snake[1].y[snake[1].knot-1]-10);

setfillstyle(1,11);

bar(snake[0].x[0]-1,snake[0].y[0]+1,snake[0].x[0]+11,snake[0].y[0]-11);

setcolor(11);/*用背景色涂去蛇1最后一節*/

rectangle(snake[0].x[snake[0].knot-1],snake[0].y[snake[0].knot-1],snake[0].x[snake[0].knot-1]+10,snake[0].y[snake[0].knot-1]-10);

}

/*蛇1的方向判斷*/

if(snake[0].live==1)/*死了就結束*/

break;

key=bioskey(0);/*按鍵的控制*/

{

if(key==ESC)/*退出*/

break;

else if(key==LEFT&&snake[0].direction!=1)/*判斷方向*/

snake[0].direction=2;

else if(key==DOWN&&snake[0].direction!=3)

snake[0].direction=4;

else if(key==UP&&snake[0].direction!=4)

snake[0].direction=3;

else if(key==RIGHT&&snake[0].direction!=2)

snake[0].direction=1;

}

/*蛇2的方向判斷*/

if(snake[1].live==1)

break;

{

if(key==A&&snake[1].direction!=1)/*判斷方向*/

snake[1].direction=2;

else if(key==S&&snake[1].direction!=3)

snake[1].direction=4;

else if(key==W&&snake[1].direction!=4)

snake[1].direction=3;

else if(key==D&&snake[1].direction!=2)

snake[1].direction=1;

}

}

}

void main(void)/*主函數*/

{

void maker(void);

void Count(void);

void draw(void);

void gameover(void);

void gamestard(void);

void printfscore(void);

int gdrive=DETECT,gmode;

initgraph(&gdrive,&gmode,"");

cleardevice();

setbkcolor(LIGHTCYAN);

draw();

gamestard();

maker();

getch();

closegraph();

}

總結

以上是生活随笔為你收集整理的C语言多人对战贪吃蛇,双人对战贪吃蛇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。