C语言贪吃蛇源程序代码双人对抗.docx

上传人:b****4 文档编号:4222190 上传时间:2023-05-06 格式:DOCX 页数:18 大小:17.68KB
下载 相关 举报
C语言贪吃蛇源程序代码双人对抗.docx_第1页
第1页 / 共18页
C语言贪吃蛇源程序代码双人对抗.docx_第2页
第2页 / 共18页
C语言贪吃蛇源程序代码双人对抗.docx_第3页
第3页 / 共18页
C语言贪吃蛇源程序代码双人对抗.docx_第4页
第4页 / 共18页
C语言贪吃蛇源程序代码双人对抗.docx_第5页
第5页 / 共18页
C语言贪吃蛇源程序代码双人对抗.docx_第6页
第6页 / 共18页
C语言贪吃蛇源程序代码双人对抗.docx_第7页
第7页 / 共18页
C语言贪吃蛇源程序代码双人对抗.docx_第8页
第8页 / 共18页
C语言贪吃蛇源程序代码双人对抗.docx_第9页
第9页 / 共18页
C语言贪吃蛇源程序代码双人对抗.docx_第10页
第10页 / 共18页
C语言贪吃蛇源程序代码双人对抗.docx_第11页
第11页 / 共18页
C语言贪吃蛇源程序代码双人对抗.docx_第12页
第12页 / 共18页
C语言贪吃蛇源程序代码双人对抗.docx_第13页
第13页 / 共18页
C语言贪吃蛇源程序代码双人对抗.docx_第14页
第14页 / 共18页
C语言贪吃蛇源程序代码双人对抗.docx_第15页
第15页 / 共18页
C语言贪吃蛇源程序代码双人对抗.docx_第16页
第16页 / 共18页
C语言贪吃蛇源程序代码双人对抗.docx_第17页
第17页 / 共18页
C语言贪吃蛇源程序代码双人对抗.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言贪吃蛇源程序代码双人对抗.docx

《C语言贪吃蛇源程序代码双人对抗.docx》由会员分享,可在线阅读,更多相关《C语言贪吃蛇源程序代码双人对抗.docx(18页珍藏版)》请在冰点文库上搜索。

C语言贪吃蛇源程序代码双人对抗.docx

C语言贪吃蛇源程序代码双人对抗

#include

#include

#include

#include

#include

#include

#include

#include

#defineLEFT100

#defineTOP30

#defineRIGHT538

#defineBOTTOM468

#defineSIZE20

#defineSL100/*SL±íʾ²úÉúʳÎïµÄ¸öÊý*/

typedefstructSnake/*±íʾÉߵĽáµã*/

{

intbx,by;

structSnake*next;

}Snake,*SnakeList;

SnakeListcreatesnake(intcx,intcy)/*´´½¨Ò»¸öÉßÍ·¡£*/

{

SnakeListl;

l=(SnakeList)malloc(sizeof(Snake));

l->next=NULL;

l->bx=cx;

l->by=cy;

returnl;

}

voidpaintsnake(SnakeListl,intscoler,inttcoler)/*Êä³öÉßÉíµÄº¯Êý£¬Ò²¿É×÷ΪÏûÈ¥ÉßÉíµÄº¯Êý¡£*/

{

SnakeListp;

intx,y;

p=l;

setfillstyle(SOLID_FILL,scoler);

for(;p->next;)

{

p=p->next;

x=p->bx;

y=p->by;

bar(x,y,x+SIZE,y+SIZE);

}

if(scoler==2)

setfillstyle(SOLID_FILL,scoler);

else

setfillstyle(SOLID_FILL,tcoler);

x=l->bx;

y=l->by;

bar(x,y,x+SIZE,y+SIZE);

}

voidchangsnake(SnakeListl,intfx,intfy,ints)/*fx,fy±íʾÉßÍ·Òƶ¯·½Ïò£¬·Ö±ðȡֵΪ1£¬-1;s±íʾÊÇ·ñ³Ôµ½Ê³Î1±íʾ³Ôµ½£¬0±íʾûÓС£*/

{

SnakeListp=l;

intx,y,t;

x=p->bx;

y=p->by;

p->bx=x+fx*(SIZE+2);

p->by=y+fy*(SIZE+2);

for(;p->next;)

{

p=p->next;

t=p->bx;

p->bx=x;

x=t;

t=p->by;

p->by=y;

y=t;

}

if(s)

{

p->next=(SnakeList)malloc(sizeof(Snake));

p->next->bx=x;

p->next->by=y;

p->next->next=NULL;

}

}

voidsetfood(int*fx,int*fy,SnakeListal,SnakeListbl)/*ÉèÖÃËæ»úʳÎï*/

{

inta,b,s=1,s2;

SnakeListslist1;

SnakeListslist2;

setfillstyle(SOLID_FILL,6);

srand(time(NULL));

for(;s;)

{

slist1=al;

slist2=bl;

a=rand()%(SIZE);

b=rand()%(SIZE);

a=LEFT+(a)*22;

b=TOP+(b)*22;

s2=1;

for(;slist1&&s2;)

{

if(a==slist1->bx&&b==slist1->by)

s2=0;

else

slist1=slist1->next;

}

s2=1;

for(;slist2&&s2;)

{

if(a==slist2->bx&&b==slist2->by)

s2=0;

else

slist2=slist2->next;

}

if(slist1==NULL&&slist2==NULL)

s=0;

}

*fx=a;

*fy=b;

bar(*fx,*fy,*fx+20,*fy+20);

}

voidqufood(intfx,intfy)/*ÏûȥʳÎï*/

{

setfillstyle(SOLID_FILL,2);

bar(fx,fy,fx+20,fy+20);

}

voidfreesnake(SnakeListpsnake)/*ÊÍ·ÅÉߵĿռ䡣*/

{

SnakeListp;

p=psnake->next;

psnake->next=NULL;

for(;p;)

{

p=psnake->next;

free(psnake);

psnake=p;

}

}

intnothit(SnakeListsnake1,SnakeListsnake2,intx,inty)/*¼ì²ésnake1ÊÇ·ñײ»÷snake2¡£*/

{

inta1,a2,b1,b2,bj=1;

a1=snake1->bx;

b1=snake1->by;

a1=a1+x*(SIZE+2);

b1=b1+y*(SIZE+2);

a2=snake2->bx;

b2=snake2->by;

for(;snake2&&bj;)

{

if(a1==a2&&b1==b2)

{

bj=0;

}

else

{

snake2=snake2->next;

a2=snake2->bx;

b2=snake2->by;

}

}

returnbj;

}

voidpaintpig()/*»Ò»¸öÖíÍ·¡£*/

{

setwritemode

(1);/*ÉèÖûæÖÆÏßÌõµÄģʽ£¬1±íʾÒì»òģʽ*/

setfillstyle(1,2);/*ÉèÖÃͼƬÌî³äģʽºÍÑÕÉ«£¬1±íʾʵɫÌî³ä£¬2±íʾÂÌÉ«*/

pieslice(220,140,0,360,80);/*»¶ú¶ä*/

pieslice(420,140,0,360,80);

setfillstyle(1,6);

pieslice(320,240,0,360,150);/*»Á³*/

arc(260,180,30,160,30);/*»üë*/

arc(380,180,30,160,30);

setfillstyle(1,4);

sector(320,260,0,360,50,40);/*»±Ç×Ó*/

setfillstyle(1,8);

pieslice(300,260,0,360,5);/*±Ç¿×*/

pieslice(340,260,0,360,5);

arc(320,260,230,310,60);/*»×ì*/

}

voidnumtostr(intn,chara[3])/*°ÑÒ»¸öÊý×Önת»»³É×Ö·û´®£¬²¢´æ´¢ÔÚaÖС£*/

{

intw;

w=n%10;

a[1]=w+'0';

w=n/10;

a[0]=w+'0';

a[2]='\0';

}

voidmain()

{

intgr=DETECT,gm;

ints1=0,s2=0,fx1=0,fy1=1,fx2=0,fy2=1;/*s1±íʾsnake1µÄÉí³¤£¬s2±íʾsnake2µÄÉí³¤;fx*,fy*±íʾÉßÍ·Ô˶¯·½Ïò£»*/

intdx,dy,add1,add2,k,k1=1,k2=1;/*dx,dy±íʾʳÎïµÄλÖã»add*=1±íʾÊÇ·ñ³Ôµ½Ê³Îk*=1±íʾÉßÍ·Ô½½ç*/

inti=1,j=0,q=1;/*j=0±íʾֻÓÐÒ»ÌõÉߣ¬j=1±íʾÓÐÁ½ÌõÉߣ¬j=2±íʾûÓÐÉßÍ˳öÓÎÏ·*/

unsignedlongt;/*t±íʾÑÓ³ÙµÄʱ¼ä*/

charw[3];

SnakeListlsnake1,lsnake2;

/*registerbgidriver(EGAVGA_driver);*/

/*detectgraph(*gr,*gm);*/

initgraph(&gr,&gm,"");/*ÉèÖÃÆÁĻΪͼÐÎģʽ*/

cleardevice();/*ÇåÆÁº¯Êý*/

for(;q;)

{

cleardevice();

paintpig();

settextstyle(0,0,3);

outtextxy(100,10,"Ilikepigs!

");

settextstyle(1,0,2);

outtextxy(300,400,"Onesnake!

");

outtextxy(300,420,"Twosnakes!

");

outtextxy(300,440,"QuitGame");

outtextxy(450,420,"Producer:

ChenChen");

outtextxy(450,440,"Time:

May232012");

outtextxy(30,370,"Keysused:

Arrowkeys");

outtextxy(30,380,"'W''A''S'D'");

outtextxy(30,390,"'enter'");

setfillstyle(1,4);

pieslice(280,400+j*20,0,360,5);

i=1;

for(;i;)

{

k=bioskey(0);/*»ñÈ¡°´¼üµÄɨÃèÂë*/

sound(1300);/*ÏìÉùº¯Êý*/

delay(10000);/*ÑÓ³Ùº¯Êý*/

nosound();/*¹Ø±ÕÏìÉùº¯Êý*/

switch(k)

{

case20480:

/*ÏòϼüµÄɨÃèÂë*/

setfillstyle(1,0);

pieslice(280,400+j*20,0,360,5);

j=(j+1)%3;

setfillstyle(1,4);

pieslice(280,400+j*20,0,360,5);

break;

case7181:

/*enter¼üµÄɨÃèÂë*/

if(j==0||j==1)

{

i=0;

}

else

{

closegraph();/*¹Ø±ÕͼÐÎģʽµÄº¯Êý*/

exit(0);/*Í˳ö³ÌÐòº¯Êý*/

}

break;

default:

break;

}

}

cleardevice();

setfillstyle(SOLID_FILL,2);/*ÉèÖÃÌî³äͼ°¸µÄģʽºÍÑÕÉ«*/

bar(LEFT,TOP,RIGHT,BOTTOM);/*»æ»ÆÁÄ»*/

lsnake1=createsnake(496,140);/*Éú³Élsnake1µÄÉßÍ·*/

lsnake2=createsnake(144,140);/*Éú³Élsnake2µÄÉßÍ·*/

setfood(&dx,&dy,lsnake1,lsnake2);

k1=1,k2=1;

fx1=0,fy1=1,fx2=0,fy2=1;

s1=0,s2=0;

t=100000;

for(;(k1||k2)&&(s1+s2

{

add1=0;

add2=0;

if(kbhit())/*kbhit()º¯Êý¼ì²âÊÇ·ñÓа´¼ü*/

{

sound(1200);

delay(10000);

k=bioskey(0);/*»ñÈ¡°´¼üµÄɨÃèÂë*/

delay(1000);

nosound();

switch(k)

{

case19200:

/*°´Ïò×ó¼ü*/

if(fx1==0)

{

fx1=-1;

fy1=0;

}

break;

case19712:

/*°´ÏòÓÒ¼ü*/

if(fx1==0)

{

fx1=1;

fy1=0;

}

break;

case18432:

/*°´ÏòÉϼü*/

if(fy1==0)

{

fx1=0;

fy1=-1;

}

break;

case20480:

/*°´Ïòϼü*/

if(fy1==0)

{

fx1=0;

fy1=1;

}

break;

case7777:

/*°´Ïò×ó¼ü*/

if(fx2==0)

{

fx2=-1;

fy2=0;

}

break;

case8292:

/*°´ÏòÓÒ¼ü*/

if(fx2==0)

{

fx2=1;

fy2=0;

}

break;

case4471:

/*°´ÏòÉϼü*/

if(fy2==0)

{

fx2=0;

fy2=-1;

}

break;

case8051:

/*°´Ïòϼü*/

if(fy2==0)

{

fx2=0;

fy2=1;

}

break;

default:

break;

}

}

if(j==1)

{

if((lsnake2->bx)>=LEFT&&(lsnake2->bx+SIZE)<=RIGHT&&(lsnake2->by)>=TOP&&(lsnake2->by+SIZE)<=BOTTOM)/*¼ì²âsnake2µÄÉßÍ·ÊÇ·ñ³ö½ç*/

{

if((lsnake2->bx==dx)&&(lsnake2->by==dy))/*¼ì²âsnake2ÊÇ·ñ³Ôµ½Ê³Îï*/

{

t=t-800;

setfillstyle(1,0);

bar(48,60,88,100);

qufood(dx,dy);

add2=1;

s2++;

setfillstyle(1,1);

bar(48,60,88,100);

numtostr(s2,w);

outtextxy(58,70,w);

outtextxy(58,80,"Blue");

}

}

else

{

k2=0;

/*freesnake(lsnake2);*/

}

if(k2&¬hit(lsnake2,lsnake1,fx2,fy2))

{

paintsnake(lsnake2,2,2);/*ÏûÈ¥Éß*/

changsnake(lsnake2,fx2,fy2,add2);/*ÉßÉí×ø±êÒƶ¯*/

paintsnake(lsnake2,14,1);/*»æÖÆÉß*/

}

}

else

{

k2=0;

paintsnake(lsnake2,14,9);

}

if((lsnake1->bx)>=LEFT&&(lsnake1->bx+SIZE)<=RIGHT&&(lsnake1->by)>=TOP&&(lsnake1->by+SIZE)<=BOTTOM)

{

if((lsnake1->bx==dx)&&(lsnake1->by==dy))

{

t=t-800;/*t¼õС±íʾÑÓ³Ù¼õС£¬¼´±íʾÉßÒƶ¯Ëٶȼӿì*/

setfillstyle(1,0);

bar(540,60,600,100);

qufood(dx,dy);

add1=1;

s1++;

setfillstyle(1,4);

bar(560,60,600,100);

numtostr(s1,w);

outtextxy(570,70,w);

outtextxy(570,80,"Red");

}

}

else

{

k1=0;

/*freesnake(lsnake1);*/

}

if(k1&¬hit(lsnake1,lsnake2,fx1,fy1))

{

paintsnake(lsnake1,2,2);

changsnake(lsnake1,fx1,fy1,add1);

paintsnake(lsnake1,5,4);

}

if(add1==1||add2==1)/*µ±Á½ÌõÉßÓÐÒ»Ìõ³Ôµ½Ê³ÎïÊÇ£¬ÖØÐÂÉèÖÃʳÎï*/

setfood(&dx,&dy,lsnake1,lsnake2);/*²úÉúʳÎï*/

delay(t);

delay(t);

delay(t);

delay(t);

delay(t);

}

if(j==0)

{

if(s1==SL)

{

settextstyle(0,0,3);

outtextxy(100,200,"YouareWin!

");

getch();

settextstyle(1,0,1);

}

else

{

settextstyle(0,0,5);

outtextxy(100,200,"GAMEOVER!

");

getch();

settextstyle(1,0,1);

}

}

else

{

if(s1>s2)

{

settextstyle(0,0,5);

outtextxy(100,200,"RedWin!

");

getch();

settextstyle(1,0,1);

}

elseif(s1

{

settextstyle(0,0,5);

outtextxy(100,200,"BlueWin!

");

getch();

settextstyle(1,0,1);

}

else

{

settextstyle(0,0,5);

outtextxy(100,200,"Adraw!

");

getch();

settextstyle(1,0,1);

}

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2