最新贪吃蛇设计论文
最新贪吃蛇设计论文
贪吃蛇设计论文
姓名:
摘要:
本文用J2SE实现大家耳熟能详的一个贪吃蛇游戏来综合运用所学知识,本游戏运用软件工程思想(螺旋模型),打好游戏主体框架,JAVA的面向对象思想,封装类,接口等概念,来完成本游戏,打到综合运用知识的目的。 ⑴.本游戏开发平台:WINXP; ⑵.JAVA开发环境: JDK1.6 +Eclipse; ⑶.开发语言:J2SE 关键词:
中央控制器;游戏面板;食物;蛇;石头
前言
贪吃蛇游戏背景:
蛇引诱夏娃吃了苹果之后,就被贬为毒虫,阴险的象征。 而蛇吃东西是整只动物吞进去的,大概在文艺复兴的时候(好象是那个时候但是不确定)就有人发明的一种游戏,是现在贪吃蛇的前身。后来慢慢的发展就变成了今天的贪吃蛇了、现在贪吃蛇主要应用于手机游戏。
本文运用软件工程思想、JAVA面向对象编程、类的封装、抽象类的使用(接口),游戏编码规范遵循MVC模式,循序渐进实现贪吃蛇的相关功能。
一 :游戏中的面向对象分析与设计 ㈠ ●涉及到几个对象(类) ㈡ ●每个类有什么方法
1 . 首先得有个游戏显示面板(GamePanel)类 该类有一个方法void display(); //用来显示游戏面板 2 . 得有个蛇(Snake)类 该类有以下几个方法:
void move(); //移动(走一步) void changeDirection(); //改变方向 void eatFood(); //吃食物(身体变长)
voolean is EatBody();//蛇是否吃到了自己的身体 void drawMe();//显示 3 . 一个食物类(Food)类 该类有以下方法:
最新贪吃蛇设计论文
boolean is SnakeEatFood(Snake); //判断蛇是否吃到了食物 void drawMe();//显示
4 . 一个背景石头(Ground)类 该类有以下方法:
Boolean isSnakeEatRock(Snake); //蛇是否吃到了石头 void drawMe();//显示
此时类之间的关系如下图所示:
图1 各个类之间的关系
二 : 编写贪吃蛇游戏中的各个类的主体框架性代码
本有序遵循MVC(Model-View-Controller)所以首先建立以上几个实体类并定义相应的包名:liang.snake.entities包下定义Food、Ground、Snake 三个类,再在liang.snake.view包下定义GamePanel类,再在,按照以上说明的各个类具有的方法,写上如下代码:
package liang.snake.entities; public class Food {
public boolean isSnakeEatFood(Snake snake) {
System.out.println("Snake's eat food"); return false; }
public void drawme() {
最新贪吃蛇设计论文
}
System.out.println("Food's drawme"); }
package liang.snake.entities;
public class Ground {
public boolean isSnakeEatRock()
{
return false;
} }
package liang.snake.entities;
public class Snake {
public void move() public void drawme() {
System.out.println("Ground's drawme"); }
{
System.out.println("Snake's move"); }
public void changeDirection(int direction) {
System.out.println("Snake's changeDirection"); }
public void eatFood() {
System.out.println("Snake's eat food"); }
public boolean isEatBody()
最新贪吃蛇设计论文
{
System.out.println("Snake's eat body"); return false; }
public void drawMe(){
System.out.println("Snake's drawMe"); }
package liang.snake.view; import java.awt.Graphics; import javax.swing.JPanel;
import liang.snake.entities.Food; import liang.snake.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.snake=snake; this.ground=ground; this.food=food;
System.out.println("GamePanel's display"); this.repaint(); }
三 : 编写Controler类与实现蛇移动的事件监听
由于蛇不能直接操作显示面板(GamePanel)所以这里定义一个监听器SnakeListener:
最新贪吃蛇设计论文
里面定义一个方法:
void snakeMove(Snake); 每当蛇移动一步就触发监听器,调用snakeMoved()由Controller去实现监听器的接口,然后由控制器去触发显示面板的事件源,让显示面板完成相应操作。 逻辑图如下:
图2 事件监听建立联系
在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;
Controler 实现SnakeListener接口并处理案件消息:代码如下: package liang.snake.Controller; import java.awt.event.KeyAdapter;
public interface SnakeListener { }
public void SnakeMove(Snake snake);
最新贪吃蛇设计论文
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.GamePanel;
public class Controller extends KeyAdapter implements SnakeListener{
Snake 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; 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;
最新贪吃蛇设计论文
}
}
snake.changeDirection(Snake.RIGHT); break;
public void newgame() { }
public void SnakeMove(Snake snake) { snake.start();
gamepanel.display(snake,ground,food); }
开发到此时,Snake中应该增加监听器,并另启动一个线程来不断调用蛇的move();在Snake中提供一个启动线程的方法,在Snake中增加如下代码: private Set<SnakeLis …… 此处隐藏:7768字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [高等教育]一年级家长课程教案
- [高等教育]封丘县人民医院深入推进纠正医药购销领
- [高等教育]2017年6月大学英语四级真题试卷及答案(
- [高等教育]2017年北京第二外国语学院文学院824中
- [高等教育]7 高中历史第7单元1861年俄国农奴制改
- [高等教育]【K12学习】4、实际测量-苏教版六年级
- [高等教育]药具培训试卷题库及部分参考答案
- [高等教育]本土电子元器件目录分销商如何赢得生意
- [高等教育]七年级岭南版美术教案
- [高等教育]书作文之书法活动通讯稿
- [高等教育]Endnote X 软件使用入门和用法总结(LS)
- [高等教育]嵌入式系统的现状及发展状况
- [高等教育]2012抗菌药物专项整治活动方案解读
- [高等教育]人教版新课本一年级数学下册期末试卷
- [高等教育]爱课程民法学观后感
- [高等教育]930机组使用说明书1
- [高等教育]煤气设备设施点检标准
- [高等教育]常见室内观叶植物图解
- [高等教育]312党员群众路线心得体会
- [高等教育]小学信息(苗版)第一册全册教案
- 在市---局2010党建大会上的讲话
- 《科哲》提纲及补充阅读材料(2010.7)
- 苏州高博软件技术职业学院论文开题报告
- 兼职导游管理的困境及对策探讨
- 基于通用设计理念的现代厨房产品语义研
- 康乐一中2010年至2011年度鼓号队、花束
- 第10章_数据收集整理与描述_期末复习课
- 2008年黑龙江林甸商贸购物中心营销策划
- 水硬度的测定实验报告
- 五分钟教你拍摄夜景光绘照
- 2014年临床妇产科三基三严试题及答案
- 0第二课 纾解压力第一站了解压力
- 解析建筑工程电气设备安装施工技术要点
- 地方性应用型本科高校“双师型”师资队
- 高考语文专题复习课件:小说阅读指导
- 装饰工程投标书2
- 大学生就业难问题探讨及对策
- English and Its History
- 青岛市城市房屋修缮工程质量监督管理办
- 初中英语形容词和副词的用法和练习题




