贪吃蛇
设计论文
:
摘要:
本文用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;
}
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 foo