Java语言如何写一段代码,让贪吃蛇食物Egg类,被Snake吃掉后,Egg里有个reAppear方法让Egg食物重新出现,但怎么写才能让重新出现的食物不出现在蛇的身体上?
时间: 2024-05-09 12:18:23 浏览: 31
您好,关于您的问题,您可以通过以下 Java 代码实现:
```java
public class Egg {
private int x; // 食物横坐标
private int y; // 食物纵坐标
// 构造函数
public Egg(int x, int y) {
this.x = x;
this.y = y;
}
// 获取食物横坐标
public int getX() {
return x;
}
// 获取食物纵坐标
public int getY() {
return y;
}
// 食物被吃后,重新出现的方法
public void reAppear(int maxX, int maxY, List<Point> snakeBody) {
Random r = new Random();
boolean flag = true;
// 随机生成一个新的食物坐标
while (flag) {
// 食物坐标范围在 maxX*maxY 范围内
x = r.nextInt(maxX);
y = r.nextInt(maxY);
// 遍历贪吃蛇身体,如果食物的坐标不在贪吃蛇身体上,即为有效坐标
for (Point p : snakeBody) {
if (p.x == x && p.y == y) {
flag = true;
break;
}
flag = false;
}
}
}
}
public class Snake {
private ArrayList<Point> body; // 贪吃蛇身体
private Egg food; // 食物
// 在 Snake 类中添加以下方法
// 吃到食物后调用此方法,让食物重新出现
public void eat() {
// 移除旧的食物
body.remove(body.size() - 1);
// 食物重新出现
food.reAppear(10, 10, body);
}
// 获取食物对象
public Egg getFood() {
return food;
}
}
```
上述代码中,我们创建了一个 Egg 类,用于表示食物,在 Snake 类中添加了吃到食物后重新出现食物的逻辑。具体实现方式是,调用 Egg 类中的 reAppear 方法重新生成坐标,并判断新的坐标是否在贪吃蛇身体上,如果在,则继续循环生成新坐标,直到坐标不在贪吃蛇身体上为止。这样可以让重新出现的食物不出现在蛇的身体上。
希望可以帮到您,如果还有任何问题,欢迎继续咨询我。
阅读全文