GameStage 类中的attack方法必须来自于RedBird和BlackBird类
时间: 2023-08-31 15:06:51 浏览: 162
cs181g-unit2-game2
感谢您的指正。以下是修改后的 GameStage 类:
```
import java.util.ArrayList;
import java.util.List;
public class GameStage {
private List<Bird> birds; // 存放小鸟对象的列表
private int capacity; // 关卡容量
public GameStage(int capacity) {
this.capacity = capacity;
birds = new ArrayList<Bird>();
}
public void setBird(Bird bird) {
if (birds.size() < capacity) {
birds.add(bird);
System.out.println("成功添加小鸟:" + bird.getClass().getSimpleName());
} else {
System.out.println("关卡已装不下更多小鸟了。");
}
}
public void startGame() {
if (birds.size() > 0) {
for (Bird bird : birds) {
if (bird instanceof RedBird) {
((RedBird) bird).attack();
} else if (bird instanceof BlackBird) {
((BlackBird) bird).attack();
}
}
} else {
System.out.println("没有小鸟可以进攻。");
}
}
}
```
在 startGame 方法中,我们使用 instanceof 运算符来判断当前遍历到的 bird 对象是 RedBird 类型还是 BlackBird 类型。然后根据具体类型进行强制类型转换,并调用相应的 attack 方法。这样就可以保证 attack 方法必须来自于 RedBird 和 BlackBird 类了。
阅读全文