- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机实习报告
姓名:
班级:
学号:
小班序号:
指导老师:夏海轮
题目:贪吃蛇游戏
邮箱:
贪吃蛇游戏实验报告
一.功能说明
1.1总体功能说明
贪吃蛇游戏主要实现的功能是蛇的移动,转向。产生水果,吃水果增加蛇身的长度。撞到自己,墙壁,障碍死亡,另外还有暂停,音乐和排除错误按键干扰等功能。
1.2用户界面
一、游戏的主界面:
进入游戏首先进入游戏的主界面。上面有游戏说明,然后会有1,2,3三个选项。分别用于选择游戏的难度。按其他键默认选择容易级别。
二、游戏界面:
游戏界面下方会及时显示游戏难度、得分和吃水果数。
三、死亡界面:
此界面给出重新玩游戏或者结束游戏的选择。
1.3使用方法
控制游戏的按键为:
上:↑ 下:↓ 左:← 右:→
按空格键暂停,然后按空格键开始。
在游戏过程中按其他键无效。
游戏有三种等级可以选。易,中,难。区别是蛇的移动速度的不同。
二.程序设计说明
2.1 总体设计框架
2.2 关键算法描述
算法:算法输入参数和输出参数,算法功能,使用什么存储结构,在主程序中起什么作用,可以使用框图或伪代码表示。
算法1:if(ch1==224)//按了方向键
{
int ch2=_getch();//从缓冲区再获得一个字符
if (ch2==72)//向上
{
if(coordinate[(hx-2)/2][hy]==2)//不能反向地走,忽略,继续自动走
{
Automatic( );//使用自动移动的函数
}
else{
coordinate[(hx-2)/2][hy]=1;//留下移动方向的标记,让身体能够跟上蛇头的轨迹
hy=hy-1;//蛇头高度减一
//判断有没有撞墙
if(coordinate[(hx-2)/2][hy]0)// 撞到了自身或者栅栏
{
textout(handle,35,17,head,1, Game Over!);//输出
break;
}
else if(coordinate[(hx-2)/2][hy]0)//吃到水果
{
marks=marks+600/speed;//加分
fs=0;//标志重置
tailFlag = false;/***/
coordinate[(hx-2)/2][hy]=1;//留下标记
textout(handle,hx,hy,head,1, ■);//输出
fruiteat(handle);//使用吃到水果后的函数
}else if(coordinate[(hx-2)/2][hy]==0)//走到空地上
{
coordinate[(hx-2)/2][hy]=1;//留下标记
textout(handle,hx,hy,head,1, ■);//输出
}
}
}
实现的是按键之后的变化。每一个上,下,左,右键都对应着遇上空地,遇上蛇身与栅栏,遇上果子三种情况,以上代码段仅列举了按上键之后的所有情况。若遇上空地,则使该坐标显示值为1,使得以后的身子也能向上行走;若遇上蛇身或者栅栏则游戏结束;若遇上果子则吃掉果子,并使用吃了果子之后的函数。
算法2:if (tailFlag) {
//尾部的处理
//以下只对向上走的部分做详细解释,向其他三个方向走的部分类似
if (coordinate[(tx-2)/2][ty]==1)//向上走
{coordinate[(tx-2)/2][ty]=0;//将方格的标志置零,方便下次调用
textout(handle,tx,ty,tail,1, );//将方格变回空白
ty=ty-1;//尾部向上移动}
实现的是尾部的处理。前文提到每走一步就会增加一节身体,同时运行这段代码剪掉尾部,而如果满足吃了果子就不会运行这段代码,此时则蛇身增长一块。
算法3:void fruiteat(HANDLE handle)
{
while(0)
{
if(fs==0)//水果已被吃
{
while(!fs)//一直循环到水果已放置
{
fx=rand()%36+1;//让水果随机出现
fy=rand()%36+1;
eatnumber++;
文档评论(0)