C语言实现贪吃蛇游戏.docx
- 文档编号:2805702
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:15
- 大小:18.45KB
C语言实现贪吃蛇游戏.docx
《C语言实现贪吃蛇游戏.docx》由会员分享,可在线阅读,更多相关《C语言实现贪吃蛇游戏.docx(15页珍藏版)》请在冰豆网上搜索。
C语言实现贪吃蛇游戏
/*===========================================================
*程序名:
贪吃蛇
/*===========================================================
*调用库:
*----------------------
*图形库graphics.h,随机库stdlib.h
*===========================================================*/
#include
#include
/*===========================================================
*宏定义:
*----------------------
*上、下、左、右、退出(ESC),暂停(PAUSE),确定(ENTER)
*alive---蛇活着,dead---蛇死亡
*no---食物不存在,yes---食物存在
*N---蛇最大长度,达到200时游戏完成
*===========================================================*/
#defineLEFT0x4b00
#defineRIGHT0x4d00
#defineDOWN0x5000
#defineUP0x4800
#defineESC0x011b
#defineSPACE0x3920
#defineENTER0x1c0d
#definealive1
#definedead0
#defineyes1
#defineno0
#defineN200
/*===========================================================
*自定义函数以及全局变量声明
*---------------------------
*Score---统计吃的食物个数;Speed_degree:
控制蛇速度变量
*===========================================================*/
voidmake_full_screen();
voidstart_screen();
voidmenu();
voidwall_note();
voidplay_game();
voidscore();
voidgame_over();
voidclose_full_screen();
voidvictory();
voidforum();
voidleave_or_again();
voidvictory();
intScore,Speed_degree;
/*===========================================================
*自定义函数:
make_full_screen()
*---------------------------------
*初始化图形界面
*===========================================================*/
voidmake_full_screen()
{
intdriver=DETECT,mode;
registerbgidriver(EGAVGA_driver);
initgraph(&driver,&mode,"");
cleardevice();
}
/*===========================================================
*自定义函数:
start_screen()
*------------------------------
*贪吃蛇游戏的欢迎界面
*===========================================================*/
voidstart_screen()
{
inti,p,color=9;
settextstyle(0,0,2);
setcolor(GREEN);
outtextxy(150,400,"Pressanykeytoloading...");
setcolor(YELLOW);
outtextxy(200,450,"Deviser:
caolvchong");
forum();
while(bioskey
(1)==0)/*当没有按键时显示snake*/
{
settextstyle(0,0,6);
for(i=9;i<15;i++)
{
color++;
if(color>=14)color=9;
setcolor(color);
outtextxy(200,200,"SNAKE");
for(p=1;p<3;p++)
delay(50000);
}
}
bioskey(0);/*返回键盘值,不然按下的扫描码将被后面检测按键函数接收*/
cleardevice();/*清屏*/
}
/*===========================================================
*自定义函数:
menu()
*------------------------------
*贪吃蛇游戏的菜单界面
*===========================================================*/
voidmenu()
{
intj=100,k=j,n,key,tag=1;
char*char_up=NULL,*char_down=NULL;
/*----------------------------------------------
*参数说明:
*j:
作为显示选择条(bar)的位置参数
*k:
作为清除选择条的位置参数
*key:
接收按键参数
*tag:
跳出menu()函数的标签,触发条件按下enter
**char_up,*char_down接收ASCII码的24(↑)和25(↓)
*----------------------------------------------*/
setcolor(RED);
settextstyle(0,0,2);
outtextxy(15,15,"choosealevel");
setcolor(LIGHTBLUE);
settextstyle(0,0,3);
outtextxy(15,100,"Easy");
outtextxy(15,150,"Normal");
outtextxy(15,200,"Hard");
setcolor(GREEN);
settextstyle(0,0,2);
sprintf(char_up,"%c",24);
outtextxy(150,350,char_up);
sprintf(char_down,"%c",25);
outtextxy(210,350,char_down);
outtextxy(170,350,"or");
outtextxy(230,350,"toselect");
outtextxy(150,380,"ENTERtoplay");
outtextxy(150,410,"ESCtoexit");
setfillstyle(2,YELLOW);
bar(190,j,215,j+25);
forum();
while(tag!
=0)
{
setfillstyle(1,BLACK);
bar(190,k,215,k+25);
setfillstyle(2,YELLOW);
bar(190,j,215,j+25);
key=bioskey(0);
switch(key)
{
caseDOWN:
k=j;if(j<200)j+=50;break;
caseUP:
k=j;if(j>100)j-=50;break;
caseENTER:
tag=0;break;
caseESC:
close_full_screen();/*退出*/
}
switch(j)
{
case100:
Speed_degree=12;break;
case150:
Speed_degree=8;break;
case200:
Speed_degree=4;break;/*对应各等级的速度延迟循环次数*/
}
}
}
/*===========================================================
*自定义函数:
wall_note()
*------------------------------
*贪吃蛇游戏的围墙,就是蛇的活动范围
*以及游戏中提示按键:
ESC--退出;SPACE--暂停
*===========================================================*/
voidwall_note()
{
cleardevice();
setlinestyle(0,0,3);
setcolor(LIGHTRED);
rectangle(47,57,603,453);
setfillstyle(1,LIGHTGREEN);
bar(55,10,600,40);
settextstyle(0,0,3);
setcolor(RED);
outtextxy(58,15,"ESC:
exit");
outtextxy(305,15,"SPACE:
pause");
forum();
}
/*===========================================================
*自定义函数:
play_game()
*------------------------------
*具体的游戏过程
*===========================================================*/
voidplay_game()
{
struct
{
intx[N];
inty[N];
intblock;
intlife;
intdirection;
}snake;
struct
{
intx;
inty;
intexist;
}food;
inti,key;
/*---------------------------------
*参数说明:
*结构体snake.[x],snake.[y]为蛇身体坐标
*snake.block蛇的节数;snake.life蛇生命参数
*snake.direction蛇的运动方向
*--------------
*结构体food.x,food.y为食物坐标
*food.exist食物存在参数
*--
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实现 贪吃 游戏