对于面向对象来说,贪吃蛇所包含的类应该有Snake类、Food类、Ground类、GamePanel类(继承JPanel),这些都是属于Entity(实体)类,所以把他们放到一个包下面,Controller类继承KeyAdapter(键盘事件监听类库)实现SnakeListener 接口,可以看出Controller是一个控制蛇和监听键盘事件的类。SnakeGameActivity类包含main函数,是游戏的入口。Global类用于定义面板格局。列入面板的长宽,格子的大小。
Controller负责控制游戏的开始、蛇的移动以及监听键盘,监听键盘调用了keyPressed键盘事件,判断键盘的输入。
实体类蛇、食物、障碍物通过对象把他们抽象出来,声明它们所具有的属性和方法,比如说:蛇具有移动和改变方向的方法。
Ground类,数组rocks用于储存障碍物,便用镶套for循环遍历,在用if判断,符合条件的生成边框障碍物。当蛇头的点与障碍物重合时就判定为蛇撞到障碍物,调用gameover的方法。
Food类是point的子类,因为生成的food是一个点。判断是否被蛇吃到的方法是蛇头的点是否和食物的点重合。当吃到蛇就会增加一个方格,同时addFood方法生成新的食物。
整个布局是以左上角的点为(0,0)的坐标,但坐标点与坐标的位置相反,它排列了数组在上面。