贪吃蛇游戏报告毕业设计android
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
武汉理工大学华夏学院课程设计
课程名称面向对象课程设计
题目贪吃蛇游戏
专业软件技术
班级软件2082班
学号10225508318
姓名王亭
成绩
指导教师
2010 年11月29日至2010年12月6日
课程设计任务书
设计题目:贪吃蛇游戏
设计目的
本课程的设计的目的是通过实践使同学们经历面向对象全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。结合具体的开发案例,理解并初步掌握系统分析、系统设计、系统实施的主要环节和步骤以及软件文档的制作能力。
设计任务(在规定的时间内完成下列任务)
1、系统功能的基本要求
移动:按下键盘上的A、D、S、W,分别使得方块向左移、右移、下移、上移,吃掉食物时,食物消失,蛇身自动增长,然后在随机产生食物,并判断食物产生的位置,以及游戏结束情况;
2、保存信息:
当玩家想保存游戏信息时,直接点击保存操作,并且可以查看到保存的信息。
时间安排
消化资料、系统调查 1天
系统分析、总体设计,实施计划、撰写报告3天
演示、验收1天
具体要求
1、明确课程设计的目的和重要性,认真领会课程设计的题目,读懂课程设计指导书的要求,学会设计的基本方法与步骤,学会如何运用前修知识与收集、归纳相关资料解决具体问题的方法。严格要求自己,要独立思考,按时、独立完成课程设计任务。
2、设计报告:要求层次清楚、整洁规范、不得相互抄袭,凡正文内容有整段完全相同者一律以抄袭论处。设计报告正文字数不少于0.2万字(不包括附录)
指导教师签名:2010年6月28日
教研室主任(或责任教师)签名:2010年6月28日
一、游戏功能
1.蛇头能够按照指定的方向进行移动,蛇身则是根据蛇头的移动方向进行移动;
2.蛇头吃掉食物后以后,食物消失并且蛇的身体要增长;
3.食物消失后能够重新产生新的食物,并且产生的新食物不能出现在蛇头和蛇身上;
4.蛇不能超出游戏的面板并且蛇头不能够撞到蛇身,否则游戏结束。
5.蛇头每吃掉一个食物游戏分数就会增长十分,游戏分数达到一定的等级后就会增加游戏的等级,并且还要能够记载游戏的时间;
6.进入游戏时能够选择游戏的难易程度;
7.结束游戏时能够保存游戏的相关信息,并且还能够查看游戏的排行榜。
二、使用的相关知识
winForm的编程、xml文件的数据存取操作、使用LINQ操作xml文件、面向对象的设计(MVC的模式)
三、整体思路
1.创建蛇头(Snakehead)、食物(Snakefood)、蛇身(Snakeblock)三个实体类
1.1 蛇头类中需要实现蛇头的初始化,蛇头的移动;
1.2 蛇身类中需要实现蛇身的移动和蛇身的增长;
1.3 食物类中需要实现食物能够被吃掉和食物的产生,并且在产生食物时要判断食物是否在蛇头和蛇身上,若在蛇头或蛇身上则重新产生食物。
2.创建一个控制类(Game)来实现对游戏的控制
2.1 能够将蛇头、蛇身、食物初始化到游戏面板中去;
2.2 能够判断蛇头超出面板或撞到蛇身时结束游戏;
2.3 能够对游戏的分数和等级的记载;
2.4 能够控制整个游戏的运行规则;
2.5 能够控制蛇头的运动方向。
3. 创建一个保存数据的SavaData类
3.1 能够保存游戏的记录;
3.2 能够查询所有的游戏记录;
4.创建一个窗体(Form1)来显示游戏,一个窗体(Form2)来输入玩家姓名,一个窗体(showData)来显示游戏的记录。
四、具体实现步骤
1.创建一个资源类(Global),这个类能够提供蛇头的大小、蛇头的方向、游戏面板的大小。具体代码:
class Global
{
//蛇头的宽度
public static int Snake_Width =20;
//蛇头的长度
public static int Snake_Height =20;
//蛇头的方向
public static Dircte Snake_Dir = Dircte.Right;
//窗体的宽度
public static int Game_Width =400;
//窗体的高度
public static int Game_Height =500;
}
2. 创建一个蛇头类(Snakehead),在构造方法中来接收显示蛇头的面板和位置两个参数;有一个变量oldPoint来保存蛇头移动前的位置,有一个init()方法来初始化蛇头,一个move()方法来进行蛇头的移动。具体代码:
class Snakehead
{
Panel panel;
Button head;
Point location;
Point oldPoint;
public Snakehead(Panel panel,Point location)
{
this.panel= panel;
this.location= location;
oldPoint =new Point();
init();
}
public Button Head
{
get {return head;}
}
public Point OldPoint
{
set { oldPoint = value;}
get {return oldPoint;}
}
//初始化蛇头
private void init()
{
head =new Button();
head.Width= Global.Snake_Width;
head.Height= Global.Snake_Height; head.Location= location;
head.BackColor= Color.Blue;
head.Visible=true;
panel.Controls.Add(head);
}
//蛇头的移动
public void move()
{
oldPoint.X= head.Left;
oldPoint.Y= head.Top;
switch(Global.Snake_Dir)
{
case Dircte.Up:
{
head.Top-= head.Height;
break;
}
case Dircte.Down:
{
head.Top+= head.Height;
break;
}
case Dircte.Left:
{
head.Left-= head.Width;
break;
}