java贪吃蛇小游戏程序课程设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《高级语言程序设计(2)》

课程设计任务书

题目贪吃蛇小游戏程序

学生姓名杨文学号201001010214 专业班级信息1002

设计内容与要求【问题描述】

这个程序是用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块。移动时必须从蛇头开始,也就是蛇尾不能改作蛇头。当游戏者按了方向键后,蛇头朝着指定的方向移动,一步移动一节身体。图形的实现是从蛇头的新位置开始画出蛇。用户可以用上下左右键控制蛇头的方向。非常简单!

【软件功能】

1. 贪吃蛇游戏是大家很常见的小游戏,在生活工作之余大家可以玩它,

已达到放松各种压力的目的。

2. 游戏可以进行升级,也就是增加吃食物的难度,以便使大家更有挑

战性,不觉得太无趣。

3. 游戏界面大小可以任意指定,数据从文件读入。

4. 利用swing实现良好的GUI界面。

【基本要求】

1. 贪食蛇的前移算法主要是蛇身结点前移,后面的覆盖前面的蛇身结

点。依靠的调用编写的成员方法实现。

2. 在贪吃蛇中蛇头来控制蛇的移动方向,依靠的调用编写的成员方法

实现。

3. 要求用户界面采用图形用户界面,影响方向键的控制。

4. 重复的调用paint()函数来实现对界面的重绘和食物的重置。

5. 源程序中要有充分的注释,报告中要有详细的流程图。

6. 运行的结果以及图形用户界面要进行屏幕拷贝,插入报告中。

幕拷贝,插入报告中。

【提交成果】

1. “《高级语言程序设计(2)》课程设计任务书”和“《高级语言程序设计

(2)》课程设计报告”打印件各一份;

2. 先将上面两项内容的word文档,通过电子邮件交到指导教师,待许

可后,打印装袋。

起止时间2012 年12 月24 日至2012 年12月30 日

指导教师签名李元觉2012年12 月22 日系(教研室)主任签名郝华宁2012 年12月22 日学生签名年月日

《高级语言程序设计(2)》课程设计报告

专业: 信息与计算科学班级: 信息1002 学号: 201001010214

姓名:杨文完成日期: 2012.12.29 指导教师:李元觉

1、程序设计说明书

【设计题目】贪吃蛇小游戏程序

【问题描述】

这个程序是用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块。

移动时必须从蛇头开始,,也就是蛇尾不能改作蛇头。当游戏者按了方向键后,蛇

头朝着指定的方向移动,一步移动一节身体。图形的实现是从蛇头的新位置开始

画出蛇。用户可以用上下左右键控制蛇头的方向。非常简单!

【软件功能】

1. 贪吃蛇游戏是大家很常见的小游戏,在生活工作之余大家可以玩它,已达到放

松各种压力的目的。

2. 游戏可以进行升级,也就是增加吃食物的难度,以便使大家更有挑战性,不觉

得太无趣。

3. 游戏界面大小可以任意指定,数据从文件读入。

4. 利用swing实现良好的GUI界面。

【算法思想】

1. 贪吃蛇是很经典的格子游戏。所谓格子游戏就是在设计游戏时的主要思想是每

个设对象都是由格子组成,游戏运行界面也是由格子组成。格子思想决定了此类游

戏在设计时的算法思想。

2. 方向键控制一个方块的移动的方法,一个方块的移动是靠移动其坐标位置来实

现的。

3. 方向键控制是上下左右对一个方块的控制,用四个判断语句实现。

4. 蛇的移动算法思想可以看成是第一个方块移动,第二个方块移到第一个方块的

位置, 第三个方块移动到第二个方块的位置⋯⋯第N个方块移动到第N-1个方块的

位置。这样连续的移动就是蛇的移动了。方向控制键控制了第一个方块的移动后,

后面方块跟着移动 ,这样也实现了方向键控制对长蛇的移动。

5. 食物的随机产生的方法食物的随机产生需要一个随机种子函数然后利用系统

时间做为随机种子。

6. 蛇的身体变长的方法当然要当蛇吃到食物时才能使身体变长。因此有两个需要

解决的问题:问题一:如何知道是否吃到食物?问题二:吃到食物后身体变长?

解决问题一的方法是需要一个判断语句,当蛇头即构成蛇的第一个方块跟食物所

在方块的坐标一样时判断吃到食物。解决问题二则要相对复杂一些,需要多个判

断语句构成。

7. 游戏结束的方法,当蛇碰到边框时或者吃到自己时游戏结束。根据这个思想可

以用判断语句实现。然后是游戏结束后的处理,比如显示继续玩游戏还是退出游

戏,并显示所吃到的食物的个数和时间等。

【类的设计】

1>.创建的类的描述。

1. Login类,登陆界面要求输入登陆者输入用户名和密码,分别设Go和Cancel

两个登陆选项。

Login

属性:用户名密码

Go(进入游戏) Cancel(取消)

操作: Enter() Close()

2.SnakeFrame类,创建游戏窗口主界面。采用图形界面设计,有窗体,菜单栏和

游戏操作界面。

3.SnakeModel类,此类为蛇的初始化状态及模型,所有的游戏的开始都通过此类

初始化及对蛇的操作。

SnakeModel

属性: rows,cols,snakeHead,runingDiriction,locRO,snake,playBlocks

snakeFood,gameScore,AddScore

操作: LocationRO getSnakeHead(),LocationRO getSnakeTail(),

Location getRuningDiriction(),LinkedList getSnake(),

LinkedList getOthers(), getScore(),getAddScore(), setSnakeHead(Location snakeHead),LocationRO getSnakeFood(),

setSnakeFood(),moveTo(Object a,LinkedList fromlist,LinkedList tolist),

init(),SnakeModel(int rows1,int cols1),move(Location direction)

4. SnakePanel类,此类为游戏界面创建蛇的面板和蛇的移动控制实现。

SnakePanel

属性:gridsPanel, row; col; gridsPanel;direction;snake; snakeBody;

otherBlocks;snakeHead; snakeFood; gameScore=0; speed;

AddScore; t; isEnd; notExit;

操作:SnakePanel(SnakeFrame parent,int row,int col),newGame(long speed)

stopGame(),returnGame(),getGameScore(),updateTextFiled(String str) updateColors(),run(),keyPressed(KeyEvent event)

keyReleased(KeyEvent event),keyTyped(KeyEvent event)

change(SnakeFrame parent,int row2, int col2)

5.LocationRO类,随机生成的食物位置。用来随机生成食物。引导蛇的移动方向。

6. Location类,对蛇的位置的描述类。

Location

属性: x y

操作:Location(int x,int y) ,getX(),getY(),setX(int x),

setY(int y) ,equalOrRev(Location e),equals(Location e) ,

reverse(Location e)

相关文档
最新文档