✅ 操作成功!

c语言贪吃蛇代码

发布时间:2023-06-09 作者:admin 来源:文学

c语言贪吃蛇代码

c语言贪吃蛇代码

-

2023年2月28日发(作者:女生拼音)

#include"graphics.h"

#include"stdio.h"

#defineMAX200

#defineMAXX30

#defineMAXY30

#defineUP18432

#defineDOWN20480

#defineLEFT19200

#defineRIGHT19712

#defineESC283

#defineENTER7181

#definePAGEUP18688

#definePAGEDOWN20736

#defineKEY_U5749

#defineKEY_K9579

#defineCTRL_P6512

#defineTRUE1

#defineFALSE0

#defineGAMEINIT1

#defineGAMESTART2

#defineGAMEHAPPY3

#defineGAMEOVER4

structSPlace

{

intx;

inty;

intst;

}place[MAX];

intspeed;

intcount;

intscore;

intcontrol;

inthead;

inttear;

intx,y;

intbabyx,babyy;

intclass;

inteat;

intgame;

intgamedelay[]={5000,4000,3000,2000,1000,500,250,100};

intgamedelay2[]={1000,1};

staticinthitme=TRUE,hit=TRUE;

voidinit(void);

voidnextstatus(void);

voiddraw(void);

voidinit(void)

{

inti;

for(i=0;i

{

place[i].x=0;

place[i].y=0;

place[i].st=FALSE;

}

place[0].st=TRUE;

place[1].st=TRUE;

place[1].x=1;

speed=9;

count=0;

score=0;

control=4;

head=1;

tear=0;

x=1;

y=0;

babyx=rand()%MAXX;

babyy=rand()%MAXY;

eat=FALSE;

game=GAMESTART;

}

voidnextstatus(void)

{

inti;

intexit;

intxx,yy;

xx=x;

yy=y;

switch(control)

{

case1:y--;yy=y-1;break;

case2:y++;yy=y+1;break;

case3:x--;xx=x-1;break;

case4:x++;xx=x+1;break;

}

hit=TRUE;

if(((control==1)||(control==2))&&((y=MAXY-1))||

(((control==3)||(control==4))&&((x=MAXX-1))))

{

hit=FALSE;

}

if((y=MAXY)||

(x=MAXX))

{

game=GAMEOVER;

control=0;

return;

}

for(i=0;i

{

if((place[i].st)&&

(x==place[i].x)&&

(y==place[i].y))

{

game=GAMEOVER;

control=0;

return;

}

if((place[i].st)&&

(xx==place[i].x)&&

(yy==place[i].y))

{

hit=FALSE;

gotoOUT;

}

}

OUT:

if((x==babyx)&&(y==babyy))

{

eat=TRUE;

count++;

score+=(1+class)*10;

}

head++;

if(head>=MAX)head=0;

place[head].x=x;

place[head].y=y;

place[head].st=TRUE;

if(eat==FALSE)

{

place[tear].st=FALSE;

tear++;

if(tear>=MAX)tear=0;

}

else

{

eat=FALSE;

exit=TRUE;

while(exit)

{

babyx=rand()%MAXX;

babyy=rand()%MAXY;

exit=FALSE;

for(i=0;i

if((place[i].st)&&(place[i].x==babyx)&&(place[i].y==babyy))

exit++;

}

}

if(head==tear)game=GAMEHAPPY;

}

voiddraw(void)

{

chartemp[50];

inti,j;

for(i=0;i

{

setfillstyle(1,9);

if(place[i].st)

bar(place[i].x*15+1,place[i].y*10+1,place[i].x*15+14,place[i].y*10+9);

}

setfillstyle(1,4);

bar(babyx*15+1,babyy*10+1,babyx*15+14,babyy*10+9);

setcolor(8);

setfillstyle(1,8);

bar(place[head].x*15+1,place[head].y*10+1,place[head].x*15+14,place[head].y*10+9);

/*for(i=0;i<=MAXX;i++)

line(i*15,0,i*15,10*MAXY);

for(j=0;j<=MAXY;j++)

line(0,j*10,15*MAXX,j*10);

*/

rectangle(0,0,15*MAXX,10*MAXY);

sprintf(temp,"Count:%d",count);

settextstyle(1,0,2);

setcolor(8);

outtextxy(512,142,temp);

setcolor(11);

outtextxy(510,140,temp);

sprintf(temp,"1P:%d",score);

settextstyle(1,0,2);

setcolor(8);

outtextxy(512,102,temp);

setcolor(12);

outtextxy(510,100,temp);

sprintf(temp,"Class:%d",class);

setcolor(8);

outtextxy(512,182,temp);

setcolor(11);

outtextxy(510,180,temp);

}

main()

{

intpause=0;

chartemp[50];

intd,m;

intkey;

intp;

staticintkeydown=FALSE;

intexit=FALSE;

intstchange=0;

d=VGA;

m=VGAMED;

initgraph(&d,&m,"");

setbkcolor(3);

class=3;

init();

p=1;

while(!exit)

{

if(kbhit())

{

key=bioskey(0);

switch(key)

{

caseUP:if((control!=2)&&!keydown)

control=1;

keydown=TRUE;

break;

caseDOWN:if((control!=1)&&!keydown)

control=2;

keydown=TRUE;

break;

caseLEFT:if((control!=4)&&!keydown)

control=3;

keydown=TRUE;

break;

caseRIGHT:if((control!=3)&&!keydown)

control=4;

keydown=TRUE;

break;

caseESC:exit=TRUE;break;

caseENTER:init();break;

casePAGEUP:class--;if(class<0)class=0;break;

casePAGEDOWN:class++;if(class>7)class=7;break;

caseKEY_U:if(((control==1)||(control==2))&&!keydown)

control=3;

elseif(((control==3)||(control==4))&&!keydown)

control=1;

keydown=TRUE;

break;

caseKEY_K:if(((control==1)||(control==2))&&!keydown)

control=4;

elseif(((control==3)||(control==4))&&!keydown)

control=2;

keydown=TRUE;

break;

caseCTRL_P:pause=1-pause;break;

}

}

stchange++;

putpixel(0,0,0);

if(stchange>gamedelay[class]+gamedelay2[hit])

{

stchange=0;

keydown=FALSE;

p=1-p;

setactivepage(p);

cleardevice();

if(!pause)

nextstatus();

else

{

settextstyle(1,0,4);

setcolor(12);

outtextxy(250,100,"PAUSE");

}

draw();

if(game==GAMEOVER)

{

settextstyle(0,0,6);

setcolor(8);

outtextxy(101,101,"GAMEOVER");

setcolor(15);

outtextxy(99,99,"GAMEOVER");

setcolor(12);

outtextxy(100,100,"GAMEOVER");

sprintf(temp,"LastCount:%d",count);

settextstyle(0,0,2);

outtextxy(200,200,temp);

}

if(game==GAMEHAPPY)

{

settextstyle(0,0,6);

setcolor(12);

outtextxy(100,300,"YOUWIN");

sprintf(temp,"LastCount:%d",count);

settextstyle(0,0,2);

outtextxy(200,200,temp);

}

setvisualpage(p);

}

}

closegraph();

}

👁️ 阅读量:0