- 项目目标和主要内容
贪吃蛇游戏是非常经典的游戏,在该题中要求实现对蛇的控制以及随机生成豆子。综合考察了包括绘制图形界面、计算器整体计算逻辑的设计以及中缀转后缀表达式和计算后缀表达式的编程等在内的多方面的应用。主要考察使用Java语言,在IDEA中完成。
2.项目主要功能
(1)实现贪吃蛇游戏基本功能,屏幕上随机出现一个“食物”,称为豆子,
(2)上下左右控制“蛇”的移动,吃到“豆子”以后“蛇”的身体加长一点。
(3)“蛇”碰到边界或蛇头与蛇身相撞,蛇死亡,游戏结束。
(4)为游戏设计友好的交互界面;例如欢迎界面,游戏界面,游戏结束界面。要有开始键、暂停键和停止退出的选项。
(5)对蛇吃到豆子进行分值计算,可以设置游戏速度,游戏音乐 等拓展元素。
3.项目设计
1.项目总体框架设计游戏界面以及创建各种功能的类。
2.设计食物和蛇身的增长。
3.完成蛇身移动以及各种游戏结束可能性的设置。
4.添加两个线程来统一蛇吃豆子的运动以及游戏分数和游戏速度的匹配。
类关系及描述
1.Node类:一个点的大小以及坐标位置
设置点的坐标位置方法:public Node(int x, int y)
2.Snake类:判断蛇的各种属性和状态
判断蛇是否吃到食物方法:private boolean isEaten()
判断是否发生碰撞,包括碰到墙壁和蛇身方法:public boolean isCollsion()
食物被吃后随即产生新食物方法:public void makeFood()
改变方向方法:public void changeDerection(int newDer)
移动蛇方法:public void move()
3.SnakeFrame类:构建贪各种组件和游戏主体
新建状态分数方法:private void newGame()
4.SnakePanel类: 绘制贪吃蛇以及食物
绘制蛇身颜色和食物颜色方法:public void paintComponent(Graphics g)
5.SnakeRunnable类:实现蛇的移动
使蛇移动方法:public void run()
6.StatusRunnable类:实现分数和状态更新
更新分数和状态方法:public StatusRunnable(Snake snake, JLabel statusLabel, JLabel scoreLabel)
7.SnakeGame类:主函数类
启动界面和线程方法:public static void main(String[] args)
方法 1:判断是否吃到食物的方法
方法功能
判断是否迟到食物,返回逻辑值,供后续调用,来进行生成新食物等操作。
方法基本思想
获取头部位置,如果蛇向右运动,且右边一个就是食物(蛇头横坐标加点宽度等于食物横坐标),那么就吃到了,返回true。其他方向以此类推。
方法 2:判断是否碰到墙的方法
方法功能
判断是否碰到墙,返回逻辑值,实现撞墙则蛇死亡以及游戏结束效果。
方法基本思想
获取头部位置,如果蛇运动方向向右并且碰到右边界,则判断撞到墙,返回true。其他方向以此类推。
方法 3:判断是否撞到身体的方法
方法功能
判断是否碰到身体,返回逻辑值,实现碰到身体则蛇死亡以及游戏结束效果。
方法基本思想
获取头部位置,然后遍历身体每一节,如果头和身体某节重合就是碰到身体,返回true。
方法 4:实现蛇运动的方法
方法功能
实现直行或转弯是蛇身的前后变换,以达到蛇身移动的效果。
方法基本思想
用坐标的改变来实现蛇的转弯,用蛇头延伸一节,蛇尾缩减一节的方式来达到蛇移动的效果。