目标:
制作使用Java语言编写贪吃蛇小游戏,实现基本贪吃蛇功能。更深刻体会Java语言的应用。
功能简介:
- 在本游戏中,开始游戏前有设置项可以选择。首先,可以选择是否显示网格。其次,设置地图,共提供了三种选择,地图1 是默认地图,地图2可选,还有个随机地图,会随机获取40个坐标作为石头。最后,可以设置蛇的速度,提供了三种速度。
- 在游戏过程中,蛇吃到自己,或者碰到石头,以及当吃完所有食物没有地方再可以生成食物时,蛇都会死亡,并弹出提示框,显示得分。在程序中还提供了一些快捷键可以使用。Shift:开始新游戏,空格键:暂停继续,方向键:控制蛇的方向等。
- 在游戏过程中,每次吃到一个食物,分数都会更新显示。游戏还会记录历史最高分。也会显示当前蛇移动的速度。
游戏框架分析:
- Snake,Food,Ground:这是三个类,每个类里面完成各自的方法。如,蛇有蛇初始化,蛇吃食物,蛇运动等方法。食物类有判断蛇是否吃到食物,尝试食物的方法。石头类有产生石头,判断蛇是否撞到石头等方法。这是三个实体类。
- Controller控制类:所有控制游戏,以及逻辑上的方法在这里面实现。比如,控制蛇的方向,开始新游戏等方法。
- SnakeListener蛇监听类:一个接口,用来监听蛇是否运动。
- GamePanel游戏界面类:用来显示游戏的画面。
- Global全局类:用来存放全局变量,如游戏界面的宽度,高度。
- MainWindow类:这是游戏的主窗体。各种按键事件在这里面实现。
- Game类:游戏的主方法,用来开始程序。
代码实现及解释:
有关蛇的代码实现:
1 | package snake.entities; |
石头的代码实现:
1 | package snake.entities; |
食物的代码实现:
1 | package snake.entities; |
游戏界面GamePanel代码:
1 | package snake.view; |
蛇监听类代码:
1 | package snake.listener; |
控制类代码实现:
1 | package snake.controller; |
工具类全局代码:
1 | package snake.util; |
游戏主窗体代码:
1 | package snake.view; |
主方法启动程序:
1 | package snake.game; |
程序运行效果:
设置项效果:
游戏是否显示网格,可通过是否选中来设置。包括选择地图,选择速度。所有设置后在开始新游戏后生效。速度在游戏过程中也可以随时调节。效果如下图:
显示分数:
在蛇每次吃到食物后,分数会加10分,并实时更新分数。以及有历史最高分。包括蛇的速度也会显示。
蛇穿越边界:
在边界没有石头时,蛇可以从一边进去,从另外一边出来。
蛇吃到石头:
蛇吃到石头后就会死亡,并弹出提框,同时显示分数。
蛇咬到自己:
蛇咬到自己也会死亡,弹出提示框。