分析设计:通过学习聊天室项目和坦克大战项目,我感觉已经初步掌握了一些面向对象的程序设计方法,所以在看这个项目的视频之前,我自己先进行了一些设计。
大家应该都玩过贪吃蛇这个小游戏,暂时呢,我觉得至少应该有三个类,一个是界面类,一个是蛇,还有一个是豆。
界面类:跟之前的坦克大战等项目一样,界面类都是必不可少的。首先考虑界面类的成员属性,界面应该有大小,也就是宽和高,界面中应该有蛇和豆,也就是一个蛇类对象和一个豆类对象。然后是成员方法,有构造方法,有界面各参数的初始化方法launch,初始化过程中需要添加窗口监听器WindowListener和键盘监听器KeyListener。初始化之后要显示图形有paint方法,显示之后还要不断刷新要有PaintThread类,刷新最好将刷新频率设置为一个常量。综上,
SnakeFrame
-WINDOW_H
-WINDOW_W
-SPEED
-Snake
-Bean
+launch()
+paint()
话说像KeyListener这种内部类还有线程该怎么表示?博主不会的说。。。
蛇:蛇应该是由一个个节点组成,所以应该有个内部类Node,然后有个盛放节点的容器LinkedList nodeList,其中有两个特殊的节点头结点和尾节点(也有可能用不到,LinkedList类中应该有相关方法),蛇头的方向direction ,蛇身长度length。然后是成员方法,自身的绘制方法draw,移动方法move,判断是否吃到豆的eat方法,吃到豆后增加长度的addNode方法,还有对按键的响应keyPressed方法。
在内部类Node中,应该有表示自身位置的坐标x,y,图形大小SIZE,自身绘制方法draw,还有用于碰撞检测的getRectangle方法。
Snake
-head
-tail
-length
-direction
-nodeList
+draw()
+move()
+eat()
+addNode()
+keyPressed()
Node
-x
-y
-SIZE
+draw()
+getRectangle()
豆类:这个比较简单,表示位置的坐标x,y,豆的直径SIZE,自身绘制方法draw,碰撞检测的getRectangle,被吃掉以后新增一个豆的方法newBean
-x
-y
-SIZE
+draw()
+getRectangle()
+newBean()
程序分析就到这里,接下来是程序的编写过程和源代码。