1 / 13
文档名称:

毕业设计思路.doc

格式:doc   大小:108KB   页数:13页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

毕业设计思路.doc

上传人:jianjian401 2017/7/25 文件大小:108 KB

下载得到文件列表

毕业设计思路.doc

文档介绍

文档介绍:Java编写贪吃蛇游戏思路
需求分析:
游戏以经典贪吃蛇默认规则设计需要蛇能够按照给定的方向每隔一段时间自动移动;方向键“↑”、“↓”、“←”、“→”可以控制蛇移动的方向,蛇每吃到一个食物后身体长度增加一格,原有食物消失,再随机生成一个不再石头上的新食物;石头即为地图,蛇吃到石头后游戏结束。
为了使游戏更加具备娱乐性和挑战性,增设关卡,随着关卡级别的升高,蛇移动速度加快,蛇吃到食物的难度加大,吃到一定数量的食物即可过关进入下一个关卡;为蛇吃到食物后添加声音效果,增设背景音乐,可以控制背景音乐的开关;
为了区别与经典模式的不同,游戏增加新的规则模式,新的模式规则中,初始化的蛇长度一定,蛇吃到食物后,食物随机产生一个新的食物,原来的食物经过蛇的消化后变为石头固定在原处不能移动。
设计思路:
首先考虑所需要的总体框架
贪吃蛇游戏主题应为蛇,需要创建蛇这个类命名为Snake,还要有食物类命名为Food,石头类命名为Stone,显示面板类命名为DisplayPanel,逻辑处理类命名为Logic以及主函数类命名为MainOfGreedySnake。
搭建类与类之间的关系
蛇吃食物,食物在被蛇吃到后随机产生新的食物,食物不能在石头上生成,关系复杂,我们可以将这些关系在逻辑处理类Logic中搭建,这样即降低了上面三个类之间的耦合性,又方便以后对辅助功能的添加。
蛇,食物,石头需要在显示面板中显示出来,而三者又在逻辑处理这个类Logic中做逻辑关系运算,我们可创建自己的显示面板类DisplayPanel,用逻辑处理类Logic创建对象作为参数传递给显示面板,使得蛇,食物,石头以及显示面板直接的关系更加简单。
添加简单的测试功能
首先需要创建主函数,主函数中创建逻辑处理类Logic的实例对象,创建自定义的显示面板对象DisplayPanel,将逻辑处理类Logic的实例对象作为参数传递给显示面板DisplayPanel的实例对象中,显示面板需要寄托在Frame框架上,这就需要在主函数中创建一个JFrame对象,然后将自定义的显示面板添加到JFrame对象上。
接着是在每个类中添加一个测试用的功能函数,简单的打印一条输出语句,在蛇类Snake中,创建一个功能函数打印“蛇类被加载”,食物类,石头类,逻辑处理类,显示面板类中添加同样的功能,在逻辑处理类中定义蛇,食物,石头对象,创建构造函数参数传入蛇,食物,石头类型的对象;自定义的显示面板继承JPanel类,定义逻辑处理类的对象,创建构造函数传入逻辑处理类的对象。
通过调用类中的功能函数来测试,确保他们之间已经建立联系。
类中填充功能及参数
首先分析蛇:
图2-
我们把显示面板划分为格子,每个单位的蛇身占一个格子,食物,石头同样,通过抽取定义一个格子类命名为
Square;蛇的身体由多个格子组成,需要一个链表集合存储,定义一个LinkedList类型的集合命名为snakeBody,存储类型为格子类型Square的对象;蛇有一个长度,定义一个int型的变量Length存储长度,定义一个int型的direction变量控制蛇移动的方向;定义一个boolean类型的变量iseatfood,来标识蛇是否吃到食物;定义一个boolean类型的变量iseatstone来标识蛇是否吃到石头;
蛇的功能有移动功能,创建功能函数move(),关于蛇移动,我们可以让存储蛇身体的集合snakeBody添加一个蛇头,去掉一个尾巴来实现,蛇头添加的位置又应该由蛇移动的方向控制,因此在添加蛇头之前应该判断蛇头的方向,如果蛇向上移动,direction应为1,我们让改变之前的snakeBody调用addFirst()功能添加蛇头,里面的参数应为改变之前的蛇头的纵坐标减一个格子,向下,向左,向右原理相同。
蛇已更改具有改变方向的功能,以便于后面控制蛇移动的时候改变方向,定义函数changeDirection(),传入int型的方向值。
蛇还应该有判断是否吃到食物的功能,定义功能函数isEatFood(),判断蛇是否吃到食物只需判断蛇头的坐标是否和食物的坐标相同,这里有一个小问题,蛇类中没有定义食物Food类型的引用,判断时还要有食物类型的对象,为了降低蛇与食物之间的联系,不得不传入一个Food 类型的参数。
图:2-
蛇应该有判断是否吃到石头的功能,由于石头是一个比较大的集合,若沿用判断是否吃到食物的方法必将浪费大量的资源,在后面设计石头的时候我们可以用一个boolean类型的二维数组来存储一组石头命名为map[][],是石头设置这个坐标为true,不是则设为false,这样判断蛇是否吃到食物就较为简单,只需判断蛇头的坐标作为石头数组时是否为treu即可。如图2-