; private boolean gameDestroyed = false;
//当前得分
private int score = 0;
//当前等级
private int level = 5;
//吃到多少食物
private int foodEaten = 0;
//当前屏幕象素宽
private int width;
//当前屏幕象素高
private int height;
//音效对象
private Player audioPlayer;
//音效对象
private Player tonePlayer;
//一个屏幕单元格宽
static int CellWidth;
//一个屏幕单元格高
static int CellHeight;
//初始蛇位置
private static final int START_POS = 3;
//重画时间
private static final int DEFAULT_WAIT = 400;
//最高难度
static final byte MAX_LEVELS = 10;
//食物颜色
static final int FOOD_COLOUR = 0x0000ff00;
//文字颜色
static final int TEXT_COLOUR = 0x00ff0000;
//擦除颜色
static final int ERASE_COLOUR = 0x00ffffff;
//蛇节点颜色
static final int DRAW_COLOUR = 0x00000000;
//一个单元大小
public static final int CELL_SIZE = 5;
……
}
最后一条蛇对象由Snake类将以上两个类又机组织在一起在游戏中使用。
public class Snake {
//方向常量
public final static byte DOWN = 2;
public final static byte LEFT = 4;
public final static byte RIGHT = 6;
public final static byte UP = 8;
// 蛇头当前方向
private byte currentDirection;
// 用一个链表来存储蛇节点
private Vector worm = new Vector(5, 2);
//是否需要更新
private boolean needUpdate;
//是否移动后更新
private boolean moveOnNextUpdate;
//是否已经吃到食物
private boolean hasEaten;
……
}
同时蛇吃的食物对象数据结构用SnakeFood类来表示如下:
public class SnakeFood {
//当前食物所在的单元X坐标
private int cellX;
//当前食物所在的单元Y坐标
private int cellY;
......
}
下图为类对应图,主要介绍与游戏相关的几个类:
SnakeMain:最主要的类,控制所有其它类的运行和销毁。
SnakePit:处理键盘输入事件并实例化Snake类和SnakeFood类的。
Snake:抽象了贪吃蛇的属性和动作。
SnakeFood:抽象了食物的属性和动作。