北邮 计算机实习 贪吃蛇游戏编写报告.doc
上传人:sy****28 上传时间:2024-09-11 格式:DOC 页数:5 大小:38KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

北邮 计算机实习 贪吃蛇游戏编写报告.doc

北邮计算机实习贪吃蛇游戏编写报告.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

2011年计算机实习报告2011年9月计算机实习报告姓名:班级:学号:小班序号:指导老师:题目:贪吃蛇小游戏邮箱:贪吃蛇小游戏实验报告一.功能说明1.1总体功能说明该软件主要实现的是贪吃蛇的基本功能,达到简单的娱乐效果。首先,完成的是贪吃蛇的移动和转弯,通过上下左右四个按键来实现蛇的移动和转弯。其次还能实现蛇的吃食过程,游戏过程中会在游戏区域内随即产生一个食物,玩家通过控制蛇的移动使蛇的头部通过食物,则完成进食过程,食物消失,蛇的身体增长一截,并在此随机产生新的食物。最后还可以完成蛇的死亡过程,即游戏结束的控制过程,如果蛇的头部碰到了墙壁或是自己的身体就会死亡,游戏结束。此外还在游戏中加了音效,使得玩家玩游戏的过程中能够更加放松。具有操作简单,易于控制,易学易玩的特点。1.2用户界面本图为游戏的主界面,其中外面的一圈紫色“■”为边界,边界内连成一串的“■”是蛇的身体,“●”形状的图标即为食物。该界面用于玩家与计算机的交流,使玩家能够通过图形界面来控制蛇的行为,进而实现游戏过程。1.3使用方法分别使用“↑↓←→”四个按键来实现对蛇的上下左右的控制,随着蛇的长度的增加,虽然蛇移动的速度没有变化,但是由于空间大小有限,而蛇的长度在逐渐增加,故使得游戏的难度组建增大。二.程序设计说明2.1总体设计框架intmain(){播放声音定义数组记录蛇的横纵坐标定义变量记录蛇的长度定义变量记录食物目标的位置定义变量判定游戏是否结束init(snakeLocation_x,snakeLocation_y,snakeLength);createObject(object_x,object_y);//初始化while(select为真){switch(choice){caseKEY_UP:do{将蛇的末尾擦除后一节赋值给前一节判断游戏是否结束蛇头转向转弯后的位置}caseKEY_DOWN:{将蛇的末尾擦除后一节赋值给前一节判断游戏是否结束蛇头转向转弯后的位置}caseKEY_RIGHT:{将蛇的末尾擦除后一节赋值给前一节判断游戏是否结束蛇头转向转弯后的位置}caseKEY_LEFT:{将蛇的末尾擦除后一节赋值给前一节判断游戏是否结束蛇头转向转弯后的位置}caseKEY_ESC:程序将会停止}}}2.2关键算法描述算法1:voidinit(int*snakeLocation_x,int*snakeLocation_y,int&snakeLength)该算法的功能是用来进行初始化实现,实现游戏边界的设计、贪吃蛇身体的初始化、贪吃蛇身体长度的初始化、在无输入的情况下蛇的移动。边界的设计主要是通过textout函数在指定位置输出“■”形状的边界。贪吃蛇身体的初始化是先定义在连续的三个点上分别输出一个“■”作为初始化的蛇。由于初始化的蛇是由三个“■”组成,故蛇的初始长度是三。在无输入的情况下,只要蛇不撞到自己的身体或是墙壁就不会死亡,一直沿着原来的方向前进,通过把后一节赋值给前一节来实现的。算法2:voidcreateObject(int&object_x,int&object_y)用于生成食物目标的一个函数。通过把产生的随机数的值分别对40和20区余,得到介于0到39之间的和0到19区间的一个随机数作为食物的横纵坐标,当满足以上条件并且食物点的横坐标为偶数时就会产生一个食物点。算法3:inteatting(intx,inty,int&object_x,int&object_y,int&snakeLength)用于判定贪吃蛇吃食物,并判定新产生的食物是否在蛇的身上或是边界上的函数。通过判断贪吃蛇的头部是否与目标食物的坐标相同来判定是否进食成功,当判定进食成功后蛇的长度会加一。通过判断食物所在位置的screen值是否为一,进而判定食物是否在合理的位置,不合理的话将重新运行creatobject函数,产生新的食物。算法4:intgameOver(intx,inty)用于判断程序是否结束。是这个程序中最简单的一个环节,但是却是最重要的一个环节。它是通过判断某一点的screen值是否为1来判断程序是否将程序结束。2.3程序设计的难点和关键点本程序设计的难点和关键点是对蛇的控制、游戏结束的判断、吃食及身体长长的控制。在对蛇的控制上,采用switch语句进行判断,判断后通过擦除蛇的头部,并将头部以外的其他部分通过循环的赋值使得上一节的坐标赋值给下一节,第一节的坐标根据转向的不同重新生成,进而实现蛇的移动的控制。在对游戏是否结束的判断上是采用判断蛇的头部的坐标对应的screen值是否为一的判断来进行的