一:整个项目工程目录预览如下,
1,ui包下为游戏界面实现类,为View层类对象
2,service包下为核心控制实现类,为Control层类对象。control包下为游戏配置类以及玩家控制类
3,dto包为游戏数据实现类。GameDto.class包含Snake(蛇)对象和Food(食物)以及grade、score、map等数据对象
二:结构分析
- 界面层
- 抽象基类UiBase.class包含:protected void drawLine和protected void drawWindow两个方法,分别用来绘制游戏区横线竖线和区域。
- UiGame.class继承UiBase.class并实现游戏区域绘制和横竖线的绘制以及snake的绘制。
- UiScore.class继承UiBase.class并实现控制区域绘制和分数、等级绘制。
- JPanelGame.class创建UiGame.class和UiScore.class对象并 安装鼠标和键盘监听事件。
- 控制层
- 核心服务类Coreservice.class:持有数据对象GameDto.class,并根据玩家控制部分和其他线程 部分来修改游戏数据对象GameDto
- private GameDto gameDto 持有游戏数据对象,下面所有对数据操作函数都是通过this对象所持有的GameDto对象来进行的
- private void initSnakeHead()将snake链表体放入到二维数组map中去
- public void initFood()启动食物小方块产生线程
- public void move()移动snake的方法,玩家控制部分的响应函数
- public void eatFood()移动snake时,吃食物的方法
- public boolean isGameOver()游戏结束判断之一,snake碰到自己的身体
- 数据层
- 数据层GameDto.class对象持有
- private boolean[][] gameMap;游戏区域的二维数组
- public static int score = 0;控制区域需要显示的分数
- public static int level = 0;控制区域需要显示的等级
- private Snake snake;链表体的snake对象
- private boolean start;多线程监控的开始、暂停标志位
- private Food foodEntity;食物Food对象
游戏结构分析到这里。由于水平有限,java还没有入门,所有上述设计理解可能会有问题,烦请java大神指点。
后续继续分析具体细节的实现。