基于JApplet的贪吃蛇游戏.ppt
第22章 基于JApplet的贪吃蛇游戏,本案例中的贪吃蛇游戏想必大家以前可能看到过,基于前面内容的学习,现在实现贪吃蛇游戏已经不是一件困难的事情。该游戏的实现涉及如下的知识点。JAppletSwing线程,22.1 贪吃蛇原理,贪吃蛇游戏是在屏幕上画出一连串的方格用于表示一条蛇,同时会在屏幕随机出现所谓的食物。游戏者可以通过键盘的方向键控制贪吃蛇的移动,每移动一下,蛇身所有的方格向前移动一格,并且判断是否在蛇尾添加一格。如果贪吃蛇在移动过程中能通过食物,表示贪吃蛇吃掉食物,贪吃蛇的流程图如图所示。,贪吃蛇流程图,22.2 基本元素SnakeNode,由于贪吃蛇可以被分割为多个方块,而且食物也是一个方块,所以将这些方块抽象为一个贪吃蛇和食物的基本组成元素:SnakeNode类。,22.3 蛇身类SnakeBody,蛇身类是对蛇的控制类,它是由多个SnakeNode对象构成。该类提供了必要的蛇状态改变的方法。SnakeBody类实现了如下几个方法。pauseMove()resumeMove()stopMove()changeDirection()moveOn(),22.3.1 run总事务方法,由于SnakeBody是一个线程类,所以它重载了run()方法来完成所有事务的处理。,22.3.2 moveOn控制方法,MoveOn方法是控制蛇身对象的主要方法,用于具体判断下一步蛇的移动方位,然后根据具体的坐标判断蛇是否越界,是否需要循环移动、设置网格的背景色等。,22.4 界面,界面是通过ColorConfig类定义的。ColorConfig类是JPanel的派生类,该类主要用于设置不同部件的颜色,如游戏背景颜色、贪吃蛇颜色、食物被吃颜色、食物本来的颜色。,22.5 面板控制,面板控制类用于实现游戏背景选择、贪吃蛇颜色、食物颜色、被吃食物颜色的设定。还可以设置和显示游戏级别与得分。这里主要使用的相关知识主要在于Swing组件的JPanel、JButton、JLabel等,以及一些监听器的实现类。ControlPanel类也是JPanel的派生类,在该组件中添加两个文本框用于显示游戏等级以及游戏得分,还包含滑动条用于改变游戏级别。,22.5.1 域和构造方法,ControlPanel类的方法主要包括构造方法、设置按钮的文本文字、可用状态,和重置游戏等。构造方法主要功能是初始化域,设置并显示相关组件,最后为组件添加事件监听器。,22.5.2 响应键盘操作,ControlKeyListener类是键盘适配器KeyAdapter的派生类,该类覆盖了父类的keyPressed方法,22.5.3 设置游戏中的颜色,ColorGroup类用于保存游戏背景色、蛇身颜色、食物颜色、吃掉食物的颜色,并且还提供了静态方法设置这些颜色值。,22.6 游戏画布类GameCanvas,GameCanvas类是JPanel的派生类,该类主要用于将画布划分一系列的方格,以及根据Applet的大小调节方格的大小。,22.7 游戏主类GreedSnake,GreedSnake类是一个Japplet的派生类,也是游戏的主程序类。该类用于显示游戏的全部内容,将ColorConfig面板和ControlPanel面板添加到JApplet中并显示游戏的进度。,22.8 运行结果,编写完程序后,使用javac命令编译该文件产生class文件,然后浏览器打开GreedSnake.html文件,即可得到运行结果。,22.9 小结,本章提供的贪吃蛇游戏是一个结合JApplet、线程、以及Swing界面设计完成的,该游戏的类比较多,主要包括基本元素、蛇身体类、面板控制、游戏画布类和游戏主类。这些类的实现都是基于Japplet小游戏进行设计的。通过本章案例相信读者对Applet小程序和线程以及Swing编程会有更加深入的了解。,