贪吃蛇实验报告Word文档下载推荐.docx

上传人:b****7 文档编号:22343069 上传时间:2023-02-03 格式:DOCX 页数:21 大小:65.72KB
下载 相关 举报
贪吃蛇实验报告Word文档下载推荐.docx_第1页
第1页 / 共21页
贪吃蛇实验报告Word文档下载推荐.docx_第2页
第2页 / 共21页
贪吃蛇实验报告Word文档下载推荐.docx_第3页
第3页 / 共21页
贪吃蛇实验报告Word文档下载推荐.docx_第4页
第4页 / 共21页
贪吃蛇实验报告Word文档下载推荐.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

贪吃蛇实验报告Word文档下载推荐.docx

《贪吃蛇实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《贪吃蛇实验报告Word文档下载推荐.docx(21页珍藏版)》请在冰豆网上搜索。

贪吃蛇实验报告Word文档下载推荐.docx

坐标位置

2.状态:

存在,或被吃。

故我们用以下结构表示:

structFood{

structPointposition;

2.4.12.4.22.4.3

==&

&

[i].y==gotolabel;

}

附录A:

程序源代码

/*writer:

neolone(LB)*/

#include<

>

#defineTRUE1

#defineFALSE0

#defineUP0x4800

#defineDOWN0x5000

#defineLEFT0x4B00

#defineRIGHT0x4D00

#defineESC0x011B

#defineSPEED10x0231

#defineSPEED20x0332

#defineSPEED30x0433

#defineQUIT0x0B30

#defineENTER0x1C0D

#defineMAX_LENGTH100/*maxlengthofsnakenodess*/

#defineGAME_SPEED100/*gamespeed*/

/*datastructure*/

};

intlength;

intdirection;

intlive;

}snake;

intexist;

}food;

intscore=0,max,max1,max2,max3,left=200,top=200,right=300,bottom=300,lastx,lasty,keyCode,keyCode2,sp,l,sel,times=1;

chartext[80];

/*functionsdeclaration*/

voidinit(void);

voidgamePlay(void);

voidclose(void);

voiddrawWall(void);

voidcreateFood(void);

voiddrawFood(void);

voiddrawSnake(void);

voiddrawScore(void);

inttouchWall(void);

inttouchSelf(void);

voidgameOver(void);

voidmoveSnake(void);

intoppositeDirection(intkeyCode);

intfoodEat(void);

voidexpandSnake(void);

voidselect(void);

/*------------------------*/

voidmain(){

init();

l=1;

while(l)

{

select();

gamePlay();

close();

voidinit(){

intgdriver=VGA,gmode=VGAHI;

[0].x=250;

[0].y=250;

[1].x=250;

[1].y=260;

=2;

=1;

=UP;

score=0;

=0;

initgraph(&

gdriver,&

gmode,"

C:

\\tc20\\BGI"

);

randomize();

/*suijishufashengqi*/

drawWall();

voidclose(){

FILE*fp;

closegraph();

if((fp=fopen("

"

"

w"

))==NULL)/*关闭时保存最高分*/

exit(0);

else

fprintf(fp,"

%d,%d,%d"

max1,max2,max3);

fclose(fp);

printf("

pessanykeytocontinue"

voidgamePlay(){

intkeyCode,d;

getch();

while(TRUE){

drawScore();

drawWall();

if(touchWall()||touchSelf()){

gameOver();

return;

}

if(!

createFood();

=1;

drawFood();

drawSnake();

for(d=0;

d<

sp;

d++)

delay(GAME_SPEED);

if(bioskey

(1)!

=0){

keyCode=bioskey(0);

switch(keyCode){

caseESC:

gameOver();

return;

default:

lastx=[].x;

lasty=[].y;

if(!

oppositeDirection(keyCode)){

=keyCode;

}

}

moveSnake();

if(foodEat()){

=FALSE;

score+=10;

expandSnake();

voiddrawWall(){

rectangle(left,top,right+10,bottom+10);

voidcreateFood(){

inti;

label:

for(i=0;

i<

=;

i++){

if[i].x==&

voiddrawFood(){

setfillstyle(1,2);

bardrawSnake(){

intj;

setfillstyle(1,4);

for(j=0;

j<

j++)

bar[j].x,[j].y,[j].x+10,[j].y+10);

voiddrawScore(void){

setfillstyle(1,16);

bar(45,45,150,80);

setcolor(WHITE);

sprintf(text,"

writer:

neolone"

outtextxy(170,50,text);

score:

%5d"

score);

outtextxy(50,50,text);

inttouchWall(){

intx1=[0].x;

inty1=[0].y;

if(x1<

left||x1>

right||y1<

top||y1>

bottom)

returnTRUE;

returnFALSE;

inttouchSelf(){

for(i=3;

;

i++)

if[0].x==[i].x&

[0].y==[i].y)

voidgameOver(){

intx2,y2;

x2=180;

y2=250;

Gameover!

!

yourscoreis%d,%d"

score,sel);

outtextxy(x2,y2,text);

delay(1000);

switch(sel%4)

case1:

if(score>

max1)

{

max1=score;

break;

case2:

max2)

max2=score;

case3:

max3)

max3=score;

default:

break;

voidmoveSnake(){

intk;

bar[].x,[].y,[].x+10,[].y+10);

for(k=;

k>

=0;

k--)

[k+1].x=[k].x;

[k+1].y=[k].y;

if==UP)

[0].y-=10;

elseif==DOWN)

[0].y+=10;

elseif==LEFT)

[0].x-=10;

elseif==RIGHT)

[0].x+=10;

;

intoppositeDirection(intkeyCode){

if(keyCode==UP&

==DOWN){

return1;

elseif(keyCode==DOWN&

==UP){

elseif(keyCode==LEFT&

==RIGHT){

elseif(keyCode==RIGHT&

==LEFT){

return0;

intfoodEat(){

if[0].x==&

[0].y==return1;

voidexpandSnake(){

if(keyCode==UP){

lastx-=10;

elseif(keyCode==DOWN){

lastx+=10;

elseif(keyCode==LEFT){

lasty-=10;

elseif(keyCode==RIGHT){

lasty+=10;

[].x=lastx;

[].y=lasty;

++;

voidselect()

{

setfillstyle(1,7);

/*实现选择速度的可视化菜单*/

bar(420,220,490,310);

setfillstyle(1,9);

bar(430,230,480,240);

setfillstyle(1,5);

speed1"

outtextxy(430,230,text);

bar(430,250,480,260);

speed2"

outtextxy(430,250,text);

bar(430,270,480,280);

speed3"

outtextxy(430,270,text);

bar(430,290,480,300);

quit"

outtextxy(430,290,text);

sel=1;

t=1;

while(t){

delay(10);

if(bioskey

(1)!

keyCode=bioskey(0);

switch(keyCode){

caseUP:

sel--;

break;

caseDOWN:

sel++;

caseENTER:

t=0;

break;

}

switch(sel%4){

case0:

setfillstyle(1,5);

bar(430,230,480,240);

case1:

setcolor(WHITE);

sprintf(text,"

outtextxy(430,230,text);

bar(430,250,480,260);

outtextxy(430,250,text);

bar(430,270,480,280);

outtextxy(430,270,text);

bar(430,290,480,300);

outtextxy(430,290,text);

break;

case2:

case3:

setfillstyle(1,9);

default:

/*ch=getch();

*/

if(times==1)/*读取历史最高分*/

r"

))==NULL)

sprintf(text,"

Cannotopenthefile"

exit(0);

fscanf(fp,"

&

max1,&

max2,&

max3);

fclose(fp);

times=0;

switch(sel%4){/*选择速度*/

l=0;

close();

sp=5;

init();

sprintf(text,"

Hightestscore:

%d"

max1);

outtextxy(50,90,text);

sp=3;

max2);

sp=1;

max3);

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

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1