没有合适的资源?快使用搜索试试~ 我知道了~
首页计算机专业毕业论文 仅供参考
资源详情
资源评论
资源推荐

JAVA 贪吃蛇开发全过程
贪吃蛇
姓名:
摘要:
本文用 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 they 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: WINXP;
⑵. JAVA Development Environment: JDK1.6 + Eclipse;
⑶. Development Languages: J2SE
Keywords:Controller;GamePanel;Food;Snake;Ground
前言
贪吃蛇游戏背景:
蛇引诱夏娃吃了苹果之后,就被贬为毒虫,阴险的象征。 而蛇吃东西是整只动物吞进去的,大概
在文艺复兴的时候(好象是那个时候但是不确定)就有人发明的一种游戏,是现在贪吃蛇的前身。
后来慢慢的发展就变成了今天的贪吃蛇了、现在贪吃蛇主要应用于手机游戏。
本文运用软件工程思想、JAVA 面向对象编程、类的封装、抽象类的使用(接口),
游戏编码规范遵循 MVC 模式,循序渐进实现贪吃蛇的相关功能。
一 :游戏中的面向对象分析与设计
㈠ ●涉及到几个对象(类)
㈡ ●每个类有什么方法
1 . 首先得有个游戏显示面板(GamePanel)类
该类有一个方法 void display(); //用来显示游戏面板
2 . 得有个蛇(Snake)类
该类有以下几个方法:
void move(); //移动(走一步)
void changeDirection(); //改变方向
void eatFood(); //吃食物(身体变长)
voolean is EatBody();//蛇是否吃到了自己的身体
void drawMe();//显示
0

JAVA 贪吃蛇开发全过程
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()
1

JAVA 贪吃蛇开发全过程
{
return false;
}
public void drawme()
{
System.out.println("Ground's drawme");
}
}
package liang.snake.entities;
public class Snake {
public void move()
{
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();
2

JAVA 贪吃蛇开发全过程
}
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;
public interface SnakeListener {
public void SnakeMove(Snake snake);
}
Controler 实现 SnakeListener 接口并处理案件消息:代码如下:
3
剩余16页未读,继续阅读












安全验证
文档复制为VIP权益,开通VIP直接复制

评论0