- 此问题在此处已有答案**:
(13个答案)
3小时前关门了。
我正在为一个基于文本的冒险(Java)编写代码,它在学校被称为Zuul的世界,我必须为玩家实现一个健康状态。我做了一个接口类:
public interface PlayerState {
public void heal();
public void injure(int damage);
public String getState();
}
我还编了三节课:
x一个一个一个一个x一个一个二个一个x一个一个三个一个
这里的问题是Player-class中的setState方法:
public class Player {
private PlayerState state;
public Player(){
}
public void setState(PlayerState state) {
this.state = state;
}
public void heal(){
state.heal();
}
public void injure(int damage){
state.injure(damage);
}
public String showStatus(){
StringBuilder longStatus = new StringBuilder("> Status of the Player");
longStatus.append("\nhealtj state: "+ state.getState());
String fullStatus = longStatus.toString();
return fullStatus;
}
}
这不是完整的播放器代码,但重要的部分。如果我尝试代码,有这样的错误:
无法从静态上下文引用非静态方法"setState(model. states. PlayerState)"
它出现了三次,每个州一次。
我希望这不是太多或少来解释我的问题。希望有人能帮助我。
ChatGpt建议我这样做:
public Player(){
Player player = new Player();
player.setState(new PlayerState);
}
这没有意义,因为我已经在Game-class中声明了Player对象。
1条答案
按热度按时间5gfr0r5j1#
谢谢大家。
解决方案是在美国实现播放器,如下所示:
这样你就可以使用当前的播放器。这里重要的是不要声明一个新的播放器,因为这会干扰当前的播放器