ImageVerifierCode 换一换
格式:DOCX , 页数:99 ,大小:668.13KB ,
资源ID:27331244      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27331244.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java贪吃蛇游戏软件设计.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java贪吃蛇游戏软件设计.docx

1、java贪吃蛇游戏软件设计 佛山科学技术学院可视化编程技术课程设计报告贪吃蛇游戏软件设计学生姓名: 林敏婷 学 号: 2012914227 年级专业:12级教育技术学2班指导老师: 容汝佳学 院: 教育科学学院广东佛山提交日期:2014年6月1. 前言22概要设计3 2.1 开发环境 3 2.2 贪吃蛇游戏功能 3 2.3 界面设计 4 2.4 类的框架结构图 53. 详细设计 8 3.1 使用的java类的说明 8 3.2 类的主要方法 103.2.1 游戏结束功能103.2.2 游戏开始功能103.2.3游戏继续功能 103.2.4 游戏暂停功能103.2.5 判断食物是否被蛇吃掉113.

2、2.6 蛇在运行中所采取的措施113.2.7 设计总体认识 123.2.8 程序流程图 13 4. 运行结果 145. 测试分析 15 5.1 程序运行情况 15 5.2 程序异常处理 166. 源程序 17 6.1 中央控制器 17 6.2 食物的产生变化 26 6.3地形的产生变化 29 6.4 蛇的产生变化 35 6.5 选项面板 45 6.6 主界面 51 6.7 游戏监听器 59 6.8 蛇的监听器 60 6.9 工具 61 6.10 游戏显示页面65参考文献67设计总结67摘要:“贪吃蛇”游戏是一个经典的游戏,本文基于Java技术和eclipse开发环境,设计了一个操作简单、界面美

3、观、功能较齐全的“贪吃蛇”游戏。其操作十分简单,使用人员能迅速掌握操作技巧并进行娱乐。即时进行娱乐,享受游戏带来的乐趣,对提高人们的生活水平有一定的帮助。整个游戏程序分为二个功能模块,八个类模块,实现了游戏的开始、暂停、结束。可以进行不同游戏地图的选择,还可以对游戏中的背景、贪吃蛇、食物等进行不同颜色的设置,其中背景还可以设置显示指定颜色的网格。在颜色设置这一块,除了提供给用户的样本之外,还有基于HSV、HLS、RGB、CMYK这四种色彩模式的颜色设置选择,给用户提供充分自由的选择空间。本程序使用的默认设置为灰色背景,黑色石头,红色贪吃蛇、红色食物,用户可以通过恢复默认设置按钮,恢复默认设置。

4、关键字:Java贪吃蛇游戏,游戏类,eclipse设计环境1 前言贪吃蛇是世界知名的益智类小游戏,选择这一游戏的设计是为了将自己的所学知识加以运用;另一方面,虽然很小就接触这个游戏,但是它的制作方法对自己而言还是很神秘的。希望通过自己的所学知识把它剖析开来,通过自己的动手实践,真正了解它的本质和精髓。通过这次实践,希望自己能不断提高编程能力,并学会从零开始分析设计程序。本游戏的开发语言为Java,开发工具选用Eclipse。Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaE

5、E, JavaME, JavaSE)的总称。它非常适合大型软件的开发,其特点是面向对象、跨平台、安全性、多线程和图形功能强。这里采用Java作为开发语言主要是基于Java的面向对象和可移植性,Eclipse 是一个开放源代码的、基于Java 的可扩展开发平台。Java自面世后就非常流行,发展迅速, Java语言去掉了C+语言的一些容易引起错误的特性,对C+语言形成了有力冲击。其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计

6、算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备显著优势和广阔前景,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。2 概要设计2.1开发环境 开发平台:Microsoft Windows 7 Professional Service Pack 2 开发工具:JBuilder 2007 + JDK 1.6.0_022.2贪吃蛇游戏功能功能 1:按下“开始新游戏”、“继续游戏”、“停止游戏”按钮可开始、继续、停止游戏,控制游戏进程;功能 2:在按下“开始新游戏”按钮之后,可以通过方向键、回车键、pageup及p

7、agedown功能键分别控制贪吃蛇的前进方向、暂停或继续、加速或减速 ; 功能 3:按下“设置背景颜色”按钮,可设置背景颜色,同时勾选网格可显示相应的颜色的网格;功能 4:按下“设置蛇头颜色”、“设置蛇身颜色”按钮可设置贪吃蛇的蛇头以及蛇身的颜色;功能 5:按下“设置食物颜色”按钮可以设置食物的颜色;功能 6:通过点选“地图1”、“地图2”可以选择不同的贪吃蛇活动地图;功能 7:按下“恢复默认设置“按钮,可恢复程序的默认设置;功能 8:游戏结束,弹出“GAME OVER”对话框,结束游戏。2.3界面设计图2.3.1 贪吃蛇游戏界面图2.3.2 贪吃蛇游戏界面2.4类的框架结构图MainFram

8、e类:属性:private final GameOptionPanel optionPanel;private final GamePanel gamePanel;private final Snake snake;private final Ground ground;private final Food food;private final JLabel infoLabel;private final Controller controller;操作: public void gameOver(); /游戏结束public void gameStart(); /游戏开始public voi

9、d gameContinue(); /游戏继续 public void gamePause(); /游戏停止 Snake类:属性:public static final int UP = 1;public static final int DOWN = -1;public static final int LEFT = 2;public static final int RIGHT = -2;private LinkedList body = new LinkedList();private int oldDirection;private int newDirection;private P

10、oint head;private Point tail;private int speed;private boolean live;private boolean pause;private Set listeners = new HashSet();方法:public void move ( ); /移动(走一步)public void changeDirection( ); /改变方向public void eatFood( ); /改变食物(身体变长)public void isEatBody( ); /蛇是否吃到了自己的身体public void drawMe( ); /显示Foo

11、d 类:属性:private static final long serialVersionUID = 1L;private Color color = new Color(0xcc0033);private Random random = new Random();方法:public Boolean isSnakeEatFood(Snake snake); /判断蛇是否吃到了食物public void drawMe( ); /显示Ground 类:属性:private boolean rocks = new booleanGlobal.WIDTHGlobal.HEIGHT;private P

12、oint freePoint = new Point();public static final Color DEFAULT_ROCK_COLOR = new Color(0x666666);private Color rockColor = DEFAULT_ROCK_COLOR;public static final Color DEFAULT_GRIDDING_COLOR = private Color griddingColor = DEFAULT_GRIDDING_COLOR;private Random random = new Random();private boolean dr

13、awGridding = false;方法:public Boolean isSnakeEatRock(Snake snake); /蛇是否吃到了石头public void drawMe( ); /显示 GamePanel类:属性:private static final long serialVersionUID = 1L;private Image oimg;private Graphics og;public static final Color DEFAULT_BACKGROUND_COLOR = new Color(0xcfcfcf);private Color background

14、Color = DEFAULT_BACKGROUND_COLOR;方法:public void display( ); /显示3 详细设计3.1贪吃蛇游戏使用的Java类的说明类名: Controller作用: 控制器,控制Ground, Snake, Food,负责游戏的逻辑,处理按键事件。继承的父类: KeyAdapter类 实现的接口: SnakeListener类 public class Controller extends KeyAdapter implements SnakeListener 类名: Food作用: 食物类。继承的父类: Point类实现的接口: 没有public

15、 class Food extends Point 类名: Ground作用: 地形类。继承的父类: 没有实现的接口: 没有public class Ground 类名: Snake作用: 蛇类。继承的父类: 没有 实现的接口: 没有public class Snake 类名: GameOptionPanel作用: 游戏的设置项面板。继承的父类: JPanel类 实现的接口: 没有public class GameOptionPanel extends JPanel 类名: Global作用: 工具类,此类中存放了其他类中用到的一些常量,并且支持配置文件。继承的父类: 没有 实现的接口: 没有

16、public class Global 类名: GamePanel作用: 游戏的显示界面。继承的父类: JPanel类。 实现的接口: 没有public class GamePanel extends JPanel 类名: MainFrame作用: 主类。继承的父类: JFrame类 实现的接口: GameListener类public class MainFrame extends JFrame implements GameListener private final GameOptionPanel optionPanel; /选项面板private final GamePanel gam

17、ePanel; /游戏面板private final Snake snake; /蛇类对象private final Ground ground; /石头对象private final Food food; /食物对象private final JLabel infoLabel; /速度标签private final Controller controller; /控制对象 程序的设计参考了Sun Java网站里的大量实例,比如Layout的使用、Event的处理等等。其中:public class MainFrame extends JFrame implements GameListene

18、r 语句实现了GameListener接口,因此可以调用addGameListener(GameListener l)方法对按钮进行点击监听,在下面的void gameStart();void gameOver();void gamePause();void gameContinue();四个方法对各个点击事件进行处理。3.2类的主要方法3.2.1游戏结束功能: public void gameOver() / TODO Auto-generated method stuboptionPanel.getPauseButton().setEnabled(false);optionPanel.ge

19、tStopGameButton().setEnabled(false); optionPanel.getNewGameButton().setEnabled(true); optionPanel.getPauseButton().setText(暂停/继续); 3.2.2游戏开始功能:public void gameStart() / TODO Auto-generated method stuboptionPanel.getPauseButton().setEnabled(true); optionPanel.getNewGameButton().setEnabled(false); opt

20、ionPanel.getStopGameButton().setEnabled(true); 3.2.3游戏继续功能:public void gameContinue() / TODO Auto-generated method stub optionPanel.getPauseButton().setText(暂停游戏); 3.2.4游戏暂停功能:public void gamePause() / TODO Auto-generated method stub optionPanel.getPauseButton().setText(继续游戏); 3.2.5判断食物是否被蛇吃掉: publi

21、c void eatFood() /* 把上一次移动拿掉的节点再加上 */ body.addLast(tail.getLocation(); /* 触发SnakeListener 的 snakeEatFood 事件 */ for (SnakeListener l : listeners) l.snakeEatFood(); 3.2.6蛇在运行中所采取的措施:public void move() /* 忽略相反方向 */ if (oldDirection + newDirection != 0) oldDirection = newDirection; /* 把蛇尾巴拿出来重新设置坐标作为新蛇头

22、 */ /* getLocation 将返回一个新的Point */ /* tail把尾巴坐标保存下来, 吃到食物时再加上 */ tail = (head = takeTail().getLocation(); /* 根据蛇头的坐标再 上下左右 */ head.setLocation(getHead(); /* 根据方向让蛇移动 */ switch (oldDirection) case UP: head.y-; /* 到边上了可以从另一边出现 */ if (head.y 0) head.y = Global.HEIGHT - 1; break; case DOWN: head.y+; /*

23、到边上了可以从另一边出现 */ if (head.y = Global.HEIGHT) head.y = 0; break; case LEFT: head.x-; /* 到边上了可以从另一边出现 */ if (head.x 0) head.x = Global.WIDTH - 1; break; case RIGHT: head.x+; /* 到边上了可以从另一边出现 */ if (head.x = Global.WIDTH) head.x = 0; break; /* 添加到头上去 */ body.addFirst(head); 3.2.7设计的总体认识 JAVA设计的摘要 JAVA设计的

24、目录结构 JAVA设计的概要和详细设计 JAVA设计的版权意识 JAVA设计需要编译的环境 JAVA设计的实用性3.2.8程序流程图 游戏开始 显示贪吃蛇于屏幕中, 是 检查贪吃蛇在屏幕上是否 游戏结束有阻碍发生 否 在规定的范围内随机产生食物 接受按钮的控制信息 是贪吃蛇 是 贪吃蛇是否有是否吃到食物 阻碍 否否移动贪吃蛇1.贪吃蛇撞到自己2.贪吃蛇撞到墙 图3贪吃蛇游戏流程图4运行结果图4 游戏结果显示图1图4 游戏结果显示图2当贪吃蛇碰到石头时,游戏面板将会弹出一个“GAME OVER”对话框,表示游戏结束,按下确定按钮之后,可以通过“开始新游戏”按钮开始新一次的游戏。5测试分析5.1程

25、序运行情况: 程序正常的响应按钮事件,贪吃蛇在规定的范围内进行移动,在没有碰到阻碍的情况下,贪吃蛇仍然保持生命,并且可以吃到食物。但前提是贪吃蛇没有吃到自己的蛇身,如果吃到蛇身或碰到阻碍,贪吃蛇就失去生命,游戏弹出“GAME OVER”对话框,按下“确定”按钮游戏也就结束了。在游戏结束之后,用户又可以通过“开始新游戏”按钮开始新的一次游戏。用户可以根据自己的喜好设置好背景、蛇头、蛇身以及食物的颜色,并且可以在地图1,地图2之间选择一种地形供贪吃蛇活动。值得注意的是,除了地形只能在游戏开始前改变之外,其它设置皆可以在游戏过程中改变。当用户想要恢复原始界面设计时,可通过“恢复默认设置”按钮将设置恢

26、复到最初的状态。用户还可以在游戏的过程中选择“继续”或“暂停 ”游戏,同时可以改变贪吃蛇移动的速度,控制游戏的难度。5.2 程序异常处理: 承自Exception 类,然后使用try-catch去捕捉这个异常,异常的处理如下: try MainFrame frame = new MainFrame(new Controller(new Snake(), new Food(), new Ground(), new GamePanel(), new JLabel(); frame.setVisible(true); catch (Exception e) e.printStackTrace();

27、/如果出现异常则打印堆栈路径try inputStream = new FileInputStream(CONFIG_FILE); properties.load(inputStream); catch (Exception e) System.out.println(没有配置文件); /如果出现异常则打印“没有配置文件”try if (inputStream != null) inputStream.close(); catch (IOException e) e.printStackTrace(); /如果出现异常则打印堆栈路径try return new Integer(properties.getProperty(key)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1