这周我们班要做一个叫“囚徒困境”的实验。这个想法是,两个罪犯在不同的房间里接受讯问,可以选择彼此合作,也可以选择叛逃并出卖对方。我们的工作是使用下面的框架来编写策略:
package specs;
public interface Strategy {
public void opponentMove(boolean isDefecting);
public boolean isDefecting();
}这些策略然后通过模拟器与其他学生制定的策略进行对比。
我的问题是:我如何让我的策略记住它的最后一步,或者它的对手的最后一步。在我看来,strategy类唯一知道的就是它不是C就是D,并且它在某个地方有一个对手,也就是C或D。
发布于 2016-09-14 02:36:18
这非常简单,在TitForTat的情况下,这两个方法成为lastMove状态变量的简单的getters和setters。
public class TitForTat implements Strategy {
private boolean lastMove;
public void opponentMove(boolean isDefecting) {
lastMove = isDefecting;
}
public boolean isDefecting() {
return lastMove;
}
}我希望你能从这一点推断出其他策略。
https://stackoverflow.com/questions/39476835
复制相似问题