贪吃蛇代码C++编译文档格式.docx
- 文档编号:18754988
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:21
- 大小:174.64KB
贪吃蛇代码C++编译文档格式.docx
《贪吃蛇代码C++编译文档格式.docx》由会员分享,可在线阅读,更多相关《贪吃蛇代码C++编译文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
intlength;
/*长度*/
intfoodx,foody;
/*食物坐标*/
intkey;
/*按键方向*/
intgetfood;
/*是否吃到食物*/
intadd;
/*每个食物得分*/
intscore;
/*总分*/
intm;
/*蛇身颜色*/
intendgamestatus;
/*结束情况*/
intlevel;
/*难度等级*/
public:
snake()
{key=72;
getfood=0;
score=0;
add=10;
speed=300;
length=0;
foodx=0,foody=0;
m=7,endgamestatus=3;
level=1;
}
voidcreateFood();
/*生成食物*/
voidshowscore();
/*展示分数*/
voidcontrol(intm);
/*用键盘控制蛇的行进*/
voidspeedup();
/*加速*/
voidspeeddown();
/*减速*/
voidcreate(intm,intlevel);
/*生成墙,初始化食物,蛇*/
voidexplation();
/*游戏说明*/
voidgameover();
/*设置游戏结束的情况*/
voidstartgame();
/*开始界面*/
voidendgame();
/*结束界面*/
voidbasic:
:
gotoxy(intx,inty)
{
COORDc;
c.X=x;
c.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
intbasic:
color(intc)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),c);
//更改文字颜色
return0;
voidsnake:
create(intm,intlevel)
inti,j;
/*生成墙*/
for(i=0;
i<
58;
i+=2)//打印上下框
gotoxy(i,0);
color(7);
cout<
<
"
■"
;
gotoxy(i,26);
for(i=1;
26;
i++)//打印左右框
gotoxy(0,i);
gotoxy(56,i);
for(i=2;
56;
i+=2)//中间
for(j=1;
j<
j++)
gotoxy(i,j);
\n\n"
while
(1)
srand((unsignedint)time(NULL));
foodx=rand()%53+2;
foody=rand()%23+2;
//生成的食物需在框内
if(foodx%2==0)
break;
//生成的食物横坐标需为偶数
}
gotoxy(foodx,foody);
//打印食物
★"
/*生成蛇*/
length=3;
//初始化蛇的属性
speed=speed-level*50;
x[0]=24;
y[0]=10;
gotoxy(x[0],y[0]);
//打印蛇头
color(m);
◆"
for(i=1;
i<
length;
i++)
x[i]=x[i-1]+2;
//打印蛇身
y[i]=y[i-1];
gotoxy(x[i],y[i]);
gotoxy(0,0);
//打印完蛇将光标移到屏幕最上方
createFood()
{intcount;
if(x[0]==foodx&
&
y[0]==foody)//蛇头碰到食物
while
(1)//再次生成食物
intflag=1;
for(inti=0;
i++)//食物不能在蛇身上
if(x[i]==foodx&
y[i]==foody)
flag=0;
if(flag&
foodx%2==0)//食物横坐标不为奇数
//绘制食物
count=rand()%7+1;
color(count);
length++;
//蛇长加1
score=score+add;
//得10分
speed=speed-5;
//速度变快
getfood=1;
//吃到了食物
/*控制蛇的行进*/
control(intm)
{intkeyhelp;
intprekey=key;
//记录前一个按键的方向
if(_kbhit())
fflush(stdin);
//清空缓冲区的字符
keyhelp=_getch();
if(keyhelp!
=224&
keyhelp!
=0&
=32)//执行加速、减速、暂停和前进
if(keyhelp==27)
{endgamestatus=3;
endgame();
elsekey=prekey;
elsekey=_getch();
if(keyhelp==0&
key>
58&
key<
61)
{speedup();
speeddown();
elseif(keyhelp==224)key=key;
elseif(key==27)
if(getfood==0)//如果未吃到食物
gotoxy(x[length-1],y[length-1]);
printf("
"
);
for(inti=length-1;
i>
0;
i--)//蛇向前移动,蛇长不变
x[i]=x[i-1];
if(prekey==72&
key==80)//蛇当前移动的方向不能和前一次的方向相反
key=72;
if(prekey==80&
key==72)
key=80;
if(prekey==75&
key==77)
key=75;
if(prekey==77&
key==75)
key=77;
/*按键所代表的数字
“↑”:
72
“↓”:
80
“←”:
75
“→”:
77
F1:
59
F2:
:
60
空格:
32
退出:
27*/
if(key!
=72&
key!
=77&
=75&
=80)key=prekey;
switch(key)
case75:
x[0]-=2;
//往左
case77:
x[0]+=2;
//往右
case72:
y[0]--;
//往上
case80:
y[0]++;
//往下
for(inti=1;
gotoxy(55,0);
/*
加速,蛇吃到食物会自动提速,并且按F1会加速
*/
speedup()
if(key==59)
speed=speed-10;
add=add+2;
减速,按F2会减速
speeddown()
if(key==60)
speed=speed+10;
//时间间隔加上10
add=add-2;
//每吃一次食物的得分减2
if(add<
0)//食物得分非负
{add=add+2;
}
/*失败,游戏结束*/
gameover()
if(y[0]==0||y[0]==26)//蛇头碰到上下边界
endgamestatus=1;
if(x[0]==0||x[0]==56)//蛇头碰到左右边界
i++)//蛇头碰到蛇身
if(x[i]==x[0]&
y[i]==y[0])
endgamestatus=2;
/*显示分数*/
showscore()
{gotoxy(64,6);
color(14);
当前得分:
score<
分"
gotoxy(64,8);
每个食物得分:
add<
color(15);
gotoxy(73,11);
注意"
gotoxy(60,13);
color(4);
###┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅###"
gotoxy(60,25);
###┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅1###"
color(3);
gotoxy(64,14);
憨憨莫撞墙,也莫咬自己"
gotoxy(64,16);
控制蛇:
↑↓←→键"
gotoxy(64,18);
加速:
F1键"
gotoxy(64,20);
减速:
F2键"
gotoxy(64,22);
暂停游戏:
空格键"
gotoxy(64,24);
退出游戏:
Esc键"
/*游戏说明*/
explation()
inti,j=1;
system("
cls"
gotoxy(40,3);
震惊!
有游戏说明"
color
(2);
for(i=6;
=22;
i++)//打印上下边框
for(j=20;
j<
=76;
j++)//打印左右边框
gotoxy(j,i);
if(i==6||i==22)printf("
#"
elseif(j==20||j==75)printf("
[]"
gotoxy(30,8);
请注意!
别撞墙,更别蠢到咬自己"
color(10);
gotoxy(30,11);
小傻瓜:
请用↑.↓.←.→控制蛇的移动"
gotoxy(30,14);
老司机:
F1为加速,F2为减速"
color(11);
gotoxy(30,17);
有三急?
按空格键暂停游戏,再按空格键继续"
gotoxy(30,20);
太“男”了?
Esc:
退出游戏"
getch();
//按任意键返回
startgame();
startgame()
intn;
gotoxy(43,8);
贪吃蛇游戏"
for(i=10;
=16;
i++)//输出边框
for(j=27;
=74;
j++)
if(i==10||i==16)
="
elseif(j==27||j==73)
||"
gotoxy(35,12);
1.引蛇出洞"
gotoxy(55,12);
2.给蛇上漆"
gotoxy(35,14);
3.新手须知"
gotoxy(55,14);
4.累觉不爱"
gotoxy(30,18);
请选择[1234]:
[]\b\b"
cin>
>
n;
//输入选项
switch(n)
case1:
//选择开始游戏
请选择难度:
[123]:
level;
//清屏
endgamestatus=3;
add=10;
create(m,level);
control(m);
createFood();
showscore();
Sleep(speed);
gameover();
Sleep(5000);
case2:
//选择蛇身颜色
请选择"
endl;
gotoxy(27,20);
color
(1);
1蓝色"
2绿色"
3湖蓝色"
4红色"
color(5);
5紫色"
color(6);
6黄色"
7白色"
color(8);
8灰色"
m;
case3:
//选择游戏说明
explation();
case4:
//选择退出
exit(0);
default:
color(12);
gotoxy(40,28);
请输入1~4之间的数!
/*游戏结束*/
endgame()
if(endgamestatus==1)//撞墙
gotoxy(35,9);
还不拐呐!
您再跑就出圈了!
elseif(endgamestatus==2)//咬自己
连自己都能咬到?
快洗洗睡吧!
elseif(endgamestatus==3)//按ESC
gotoxy(40,9);
您选择了半途而废,欸!
gotoxy(43,12);
您的得分是"
score;
gotoxy(30,23);
重玩一局[1]"
gotoxy(55,23);
溜了溜了[2]"
gotoxy(45,25);
选择:
key=72;
gotoxy(35,27);
您的输入有误,自动为您退出游戏"
intmain()
{snakes;
s.startgame();
运行展示
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 贪吃 代码 C+ 编译