我正在制作一个关于构建简单行为Ai的教程。 它的大脑' class是抽象的,包含"运行","成功","失败"等状态。 现在在我的ai单元 - 机器人类我有一个启动机器人的方法
public void update(){
if(Routine.getState()==null){
Routine.start();
}
Routine.act(this, board);
}
Eclipse告诉我Routine的方法无效,因为:
无法从类型Routine
中对非静态方法getState()进行静态引用
我可以为getState做些什么,但我必须将RoutineState更改为静态,但我不能为开始做或按行为进行操作this.
到目前为止,这是ai的大脑:
public abstract class Routine {
public enum RoutineState{
Success,
Failure,
Running
}
public RoutineState getState(){
return state;
}
protected RoutineState state;
protected Routine() { }
public void start(){
this.state = RoutineState.Running;
}
public abstract void reset();
public abstract void act(droid droid, board board);
public void succed(){
this.state = RoutineState.Success;
}
public void Fail(){
this.state = RoutineState.Failure;
}
public boolean isSuccess(){
return state.equals(RoutineState.Success);
}
public boolean isFailure(){
return state.equals(RoutineState.Failure);
}
public boolean isRunning(){
return state.equals(RoutineState.Running);
}
}
答案 0 :(得分:3)
如果state
是一个类字段,它应该是静态的,如下所示。
否则,您需要一个对象才能获得自己的状态。
public static RoutineState getState(){
return state;
}
protected static RoutineState state;