贪吃蛇c语言代码.docx
- 文档编号:2264227
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:21
- 大小:18.94KB
贪吃蛇c语言代码.docx
《贪吃蛇c语言代码.docx》由会员分享,可在线阅读,更多相关《贪吃蛇c语言代码.docx(21页珍藏版)》请在冰豆网上搜索。
贪吃蛇c语言代码
贪吃蛇c语言代码
#include
#include
#include
#include
#defineNULL0
#defineUP18432
#defineDOWN20480
#defineLEFT19200
#defineRIGHT19712
#defineESC283
#defineENTER7181
structsnake
{intcenterx;
intcentery;
intnewx;
intnewy;
structsnake*next;
};
structsnake*head;
intgrade=60;/*控制速度的*******/
inta,b;/*背静遮的位置*/
void*far1,*far2,*far3,*far4;/*蛇身指针背静遮的指针虫子*/
intsize1,size2,size3,size4;/***全局变量**/
intch=RIGHT;/**************存按键开始蛇的方向为RIGHT***********/
intchy=RIGHT;
intflag=0;/*********判断是否退出游戏**************/
intcontrol=4;/***********判断上次方向和下次方向不冲突***/
intnextshow=1;/*******控制下次蛇身是否显示***************/
intscenterx;/***************随即矩形中心坐标***************/
intscentery;
intsx;/*******在ab未改变前得到他们的值保证随机矩形也不在此出现*******/
intsy;
/************************蛇身初始化**************************/
voidsnakede()
{
structsnake*p1,*p2;
head=p1=p2=(structsnake*)malloc(sizeof(structsnake));
p1->centerx=80;
p1->newx=80;
p1->centery=58;
p1->newy=58;
p1=(structsnake*)malloc(sizeof(structsnake));
p2->next=p1;
p1->centerx=58;
p1->newx=58;
p1->centery=58;
p1->newy=58;
p1->next=NULL;
}
/*******************end*******************/
voidwelcome()/*************游戏开始界面 ,可以选择 速度**********/
{
intkey;
intsize;
intx=240;
inty=300;
intf;
void*buf;
setfillstyle(SOLID_FILL,BLUE);
bar(98,100,112,125);
setfillstyle(SOLID_FILL,RED);
bar(98,112,112,114);
setfillstyle(SOLID_FILL,GREEN);
bar(100,100,110,125);
size=imagesize(98,100,112,125);
buf=malloc(size);
getimage(98,100,112,125,buf);
cleardevice();
setfillstyle(SOLID_FILL,BLUE);
bar(240,300,390,325);
outtextxy(193,310,"speed:
");
setfillstyle(SOLID_FILL,RED);
bar(240,312,390,314);
setcolor(YELLOW);
outtextxy(240,330,"DOWN");
outtextxy(390,330,"UP");
outtextxy(240,360,"ENTERtostart...");
outtextxy(270,200,"SNAKE");
fei(220,220);
feiyang(280,220);
yang(340,220);
putimage(x,y,buf,COPY_PUT);
setcolor(RED);
rectangle(170,190,410,410);
while
(1)
{if(bioskey
(1))/********8选择速度部分************/
key=bioskey(0);
switch(key)
{
caseENTER:
f=1;
break;
caseDOWN:
if(x>=240)
{putimage(x-=2,y,buf,COPY_PUT);
grade++;
key=0;
break;
}
caseUP:
if(x<=375)
{putimage(x+=2,y,buf,COPY_PUT);
grade--;
key=0;
break;
}
}
if(f==1)
break;
}/**********end****************/
free(buf);
}
/*************************随即矩形*****************/
/***********当nextshow为1的时候才调用此函数**********/
voidran()
{intnx;
intny;
intshow;/**********控制是否显示***********/
intjump=0;
structsnake*p;
p=head;
if(nextshow==1)/***********是否开始随机产生***************/
while
(1)
{show=1;
randomize();
nx=random(14);
ny=random(14);
scenterx=nx*22+58;
scentery=ny*22+58;
while(p!
=NULL)
{
if(scenterx==p->centerx&&scentery==p->centery||scenterx==sx&&scentery==sy)
{show=0;
jump=1;
break;
}
else
p=p->next;
if(jump==1)
break;
}
if(show==1)
{putimage(scenterx-11,scentery-11,far3,COPY_PUT);
nextshow=0;
break;
}
}
}
/***********过关动画**************/
voiddonghua()
{inti;
cleardevice();
setbkcolor(BLACK);
randomize();
while
(1)
{for(i=0;i<=5;i++)
{putpixel(random(640),random(80),13);
putpixel(random(640),random(80)+80,2);
putpixel(random(640),random(80)+160,3);
putpixel(random(640),random(80)+240,4);
putpixel(random(640),random(80)+320,1);
putpixel(random(640),random(80)+400,14);
}
setcolor(YELLOW);
settextstyle(0,0,4);
outtextxy(130,200,"Wonderful!
!
");
setfillstyle(SOLID_FILL,10);
bar(240,398,375,420);
feiyang(300,400);
fei(250,400);
yang(350,400);
if(bioskey
(1))
if(bioskey(0)==ESC)
{
flag=1;
break;
}
}
}
/*************************end************************/
/***********************初始化图形系统*********************/
voidinit()
{inta=DETECT,b;
inti,j;
initgraph(&a,&b,"");
}
/***************************end****************************/
/***画立体边框效果函数******/
voidtline(intx1,inty1,intx2,inty2,intwhite,intblack)
{setcolor(white);
line(x1,y1,x2,y1);
line(x1,y1,x1,y2);
setcolor(black);
line(x2,y1,x2,y2);
line(x1,y2,x2,y2);
}
/****end*********/
/*************标志**********/
intfeiyang(intx,inty)
{intfeiyang[18][18]={{0,0,0,0,0,0,1,1,1,1,1,1,0,1,1,0,0,0},
{0,0,0,0,0,1,1,1,0,0,1,1,1,1,1,0,0,0},
{0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0},
{0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0},
{0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0},
{0,0,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0},
{0,0,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0},
{0,0,1,1,1,1,1,0,0,1,0,0,1,1,0,0,0,0},
{0,0,1,1,1,0,0,0,0,1,0,1,1,1,0,0,0,0},
{0,0,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0},
{0,0,1,1,0,0,0,1,0,0,1,1,0,0,0,0,0,0},
{0,0,1,1,0,0,0,1,1,0,0,1,1,0,0,1,0,0},
{0,0,1,1,1,0,0,1,1,0,0,1,1,0,0,1,0,0},
{0,0,1,1,1,1,0,1,1,1,1,1,1,0,1,1,0,0},
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 贪吃 语言 代码