我正在尝试创建一个独立运行的状态机。因此,您启动它并更改值,如果值低于或高于某个级别,则会更改State。但是我被困住了。
这是主要的:
public static void main(String[] args) {
BankRobber br = new BankRobber(stR, 0, 100, 200);
Cop cop = new Cop(stC, 0);
br.changeRobberState();
br.robberStats();
br.checkRobberState();
cop.changeCopState();
cop.copStats();
cop.checkCopState();
}
}
这里有一个关于robberStats()如何工作的例子:
if (st == robberState.ROBBINGBANK) {
money += 1000;
distanceToCop -= 20;
energy -= 8;
}
BankRobber对象有三个不同的int值。金钱,能量和距离。 更改这些值的方法是robberStats()。根据它所处的状态而改变值。 我想在Cop类中使用distanceToCop值。但我不知道如何使用Cop中BankRobber类的distanceToCop值。有人可以帮忙吗?
答案 0 :(得分:0)
通常的方法是,您将拥有某种Manager
类,它将引用Cop
和BankRobber
通过 getters 并通过 setters 设置新值。因为它应该永远运行,你可能希望将行为置于某种(无限)循环中。
class Manager {
private Cop cop;
private BankRobber robber;
public void run() {
while (true /* or something else*/) {
int distanceToCop = robber.getDistanceToCop();
cop.updateState(distanceToCop);
/* Maybe get something from cop now and call updateState on robber */
}
}
}
答案 1 :(得分:0)
在BankRobber类中声明一个公共静态变量distanceToCop。 通过从Cop类方法调用BankRobber.distanceToCop直接在Cop类中使用它。
答案 2 :(得分:0)
我明白了。我用getter和setter方法修复它。感谢您的提示