java版的贪吃蛇毕业论文.doc
《java版的贪吃蛇毕业论文.doc》由会员分享,可在线阅读,更多相关《java版的贪吃蛇毕业论文.doc(22页珍藏版)》请在沃文网上搜索。
1、贪吃蛇姓名: 摘要:本文用J2SE实现大家耳熟能详的一个贪吃蛇游戏来综合运用所学知识,本游戏运用软件工程思想(螺旋模型),打好游戏主体框架,JAVA的面向对象思想,封装类,接口等概念,来完成本游戏,打到综合运用知识的目的。本游戏开发平台:WINXP;JAVA开发环境: JDK1.6 +Eclipse;开发语言:J2SE关键词:中央控制器;游戏面板;食物;蛇;石头The Greed Snake Abstract: In this paper, J2SE implementation of a Snake game familiar to the integrated use of what th
2、ey have learned, this game is the use of software engineering thinking (spiral model), the main framework of the fight game, JAVA object-oriented thinking, wrapper classes, interface concepts to complete this game, hitting the integrated use of knowledge and purpose. The game development platform: W
3、INXP;. JAVA Development Environment: JDK1.6 + Eclipse;. Development Languages: J2SEKeywords:Controller;GamePanel;Food;Snake;Ground前言贪吃蛇游戏背景:蛇引诱夏娃吃了苹果之后,就被贬为毒虫,阴险的象征。 而蛇吃东西是整只动物吞进去的,大概在文艺复兴的时候(好象是那个时候但是不确定)就有人发明的一种游戏,是现在贪吃蛇的前身。后来慢慢的发展就变成了今天的贪吃蛇了、现在贪吃蛇主要应用于手机游戏。本文运用软件工程思想、JAVA面向对象编程、类的封装、抽象类的使用(接口),游戏
4、编码规范遵循MVC模式,循序渐进实现贪吃蛇的相关功能。一 :游戏中的面向对象分析与设计 涉及到几个对象(类) 每个类有什么方法1 . 首先得有个游戏显示面板(GamePanel)类该类有一个方法void display(); /用来显示游戏面板2 . 得有个蛇(Snake)类该类有以下几个方法:void move(); /移动(走一步)void changeDirection(); /改变方向void eatFood(); /吃食物(身体变长)voolean is EatBody();/蛇是否吃到了自己的身体void drawMe();/显示3 . 一个食物类(Food)类该类有以下方法:bo
5、olean is SnakeEatFood(Snake); /判断蛇是否吃到了食物void drawMe();/显示4 . 一个背景石头(Ground)类该类有以下方法:Boolean isSnakeEatRock(Snake); /蛇是否吃到了石头void drawMe();/显示此时类之间的关系如下图所示:图1 各个类之间的关系二 : 编写贪吃蛇游戏中的各个类的主体框架性代码本有序遵循MVC(Model-View-Controller)所以首先建立以上几个实体类并定义相应的包名:liang.snake.entities包下定义Food、Ground、Snake 三个类,再在liang.sn
6、ake.view包下定义GamePanel类,再在,按照以上说明的各个类具有的方法,写上如下代码:package liang.snake.entities;public class Food public boolean isSnakeEatFood(Snake snake) System.out.println(Snakes eat food); return false; public void drawme() System.out.println(Foods drawme); package liang.snake.entities;public class Ground public
7、 boolean isSnakeEatRock() return false; public void drawme() System.out.println(Grounds drawme); package liang.snake.entities;public class Snake public void move() System.out.println(Snakes move); public void changeDirection(int direction) System.out.println(Snakes changeDirection); public void eatF
8、ood() System.out.println(Snakes eat food); public boolean isEatBody() System.out.println(Snakes eat body); return false; public void drawMe() System.out.println(Snakes drawMe);package liang.snake.view;import java.awt.Graphics;import javax.swing.JPanel;import liang.snake.entities.Food;import liang.sn
9、ake.entities.Ground;import liang.snake.entities.Snake;public class GamePanel extends JPanel private Snake snake; private Ground ground; private Food food;public void paintComponent(Graphics g) snake.drawMe();ground.drawme();food.drawme();public void display(Snake snake,Ground ground,Food food) this.
10、snake=snake;this.ground=ground;this.food=food; System.out.println(GamePanels display); this.repaint(); 三 : 编写Controler类与实现蛇移动的事件监听 由于蛇不能直接操作显示面板(GamePanel)所以这里定义一个监听器SnakeListener:里面定义一个方法:void snakeMove(Snake); 每当蛇移动一步就触发监听器,调用snakeMoved()由Controller去实现监听器的接口,然后由控制器去触发显示面板的事件源,让显示面板完成相应操作。逻辑图如下:图2
11、事件监听建立联系在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;并添加一个接口:package liang.snake.Listener;import liang.snake.entities.Snake;public interface SnakeListener public void SnakeMove(Snake snake);Controler
12、 实现SnakeListener接口并处理案件消息:代码如下:package liang.snake.Controller;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import liang.snake.Listener.SnakeListener;import liang.snake.entities.Food;import liang.snake.entities.Ground;import liang.snake.entities.Snake;import liang.snake.view.GamePa
13、nel;public class Controller extends KeyAdapter implements SnakeListenerSnake snake=new Snake();Ground ground=new Ground(); Food food=new Food(); GamePanel gamepanel=new GamePanel(); public Controller(Snake snake, Ground ground, Food food, GamePanel gamepanel) this.snake = snake;this.ground = ground;
14、this.food = food;this.gamepanel = gamepanel;public void keyReleased(KeyEvent e) switch(e.getKeyCode()case KeyEvent.VK_UP :snake.changeDirection(Snake.UP);break;case KeyEvent.VK_DOWN :snake.changeDirection(Snake.DOWN);break;case KeyEvent.VK_LEFT :snake.changeDirection(Snake.LEFT);break;case KeyEvent.
15、VK_RIGHT :snake.changeDirection(Snake.RIGHT);break;public void newgame()snake.start();public void SnakeMove(Snake snake) gamepanel.display(snake,ground,food);开发到此时,Snake中应该增加监听器,并另启动一个线程来不断调用蛇的move();在Snake中提供一个启动线程的方法,在Snake中增加如下代码:private Set listener=new HashSet(); public void addSnakeListener(Sn
16、akeListener l) if(l!=null) this.listener.add(l); public void start() new Thread(new SnakeDriver().run(); 并在Run方法中增加for(SnakeListener l: listener)l.SnakeMove(Snake.this);try Thread.sleep(1000); catch (InterruptedException e) e.printStackTrace();四 :编写对各个类进行测试的程序代码构建一个新类Game来测试程序代码:package liang.snake.
17、Game;import java.applet.AudioClip;import java.awt.BorderLayout;import java.io.File;import .MalformedURLException;import .URL;import javax.swing.JFrame;import liang.snake.Controller.Controller;import liang.snake.entities.Food;import liang.snake.entities.Ground;import liang.snake.entities.Snake;import
18、 liang.snake.view.GamePanel;public class Game public static void main(String args) JFrame jf=new JFrame(我的论文);Snake snake=new Snake(); Ground ground=new Ground(); Food food=new Food(); GamePanel gamepanel=new GamePanel(); Controller controller=new Controller(snake, ground, food, gamepanel); jf.setDe
19、faultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setLocation(400, 0); jf.setSize(800, 600); jf.add(gamepanel); jf.addKeyListener(controller); snake.addSnakeListener(controller); jf.setVisible(true); controller.newgame();运行这个带有main()的类,在Eclipse 的Console窗口中可以看到如下信息:Snakes moveGamePanels displaySnakes dra
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 贪吃 毕业论文
