【贪吃蛇游戏】JavaSE零基础项目实战教程-下

149 阅读2分钟

「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战

11. 让蛇动起来

1. 创建一个定时器Timer,第一个参数为多长时间比如:100毫秒,第二个参数当时间到了以后找谁this

需要实现ActionListener接口,重写actionPerformed()方法,也就是当时间到了调用actionPerformed()方法

2. 在构造方法中启动定时器,当到100毫秒就调用重写actionPerformed()方法

3. 在重写actionPerformed()方法体中,实现蛇移动

移动蛇的思路:

假如蛇水平向右移动,最后一个身体移动到前面一个身体的位置,也就是x坐标更改,y坐标不动

假如蛇的头部也水平向右移动,蛇的头部x坐标应该在当前位置+25

4. 调用重新画的方法,再重新启动定时器

编写具体代码如下:

image.png

image.png

image.png

image.png

运行效果如下:

image.png

12. 实现暂停

在重写actionPerformed()方法中进行判断,当标记的值为true时,则蛇进行移动

编写具体代码如下:

image.png

运行效果如下:

image.png

当按空格键时,提示信息不显示同时蛇开始水平向右移动,运行效果如下:

image.png

当再按空格键时,则游戏暂停并且显示提示信息,运行效果如下:

image.png

13. 实现转向功能

1. 通过键盘按键更改变量direction的值

2. 在actionPerformed()方法中,通过判断变量direction方向进行蛇头的上下左右移动

编写具体代码如下:

image.png

image.png

运行效果如下:

image.png

当运行后按空格键,然后再按向下方向键,运行效果如下:

image.png

当运行后按向左方向键,运行效果如下:

image.png

当运行后按向上方向键,运行效果如下:

image.png

14. 添加食物

1. 随机生成食物,声明两个变量foodX和foodY表示食物的位置,声明一个随机的变量random,声明食物图片food

2. 在无参构造方法中,生成食物foodX和foodY的坐标

foodX = 25 + 25 * random.nextInt(20);

foodY = 25 + 25 * random.nextInt(20);

3. 在paintComponect()方法中添加食物

编写具体代码如下:

image.png

image.png

image.png

运行效果如下:

image.png

15. 吃掉食物

当蛇的头部和食物的坐标完全重叠时,则表示吃到食物,同时蛇的长度加1,并且生成一个新的食物

具体实现思路如下:

1. 在actionPerformed()方法中,判断蛇头x的坐标与食物x坐标foodX相同,并且蛇头y坐标与食物y坐标foodY相同,则长度加1

2. 再重新生成食物的x和y坐标

编写具体代码如下:

image.png

运行效果如下:

image.png

当吃到食物时蛇的长度加1,然后生成新的食物,运行效果如下:

image.png

16. 游戏结束