岩石,纸,剪刀机器人

时间:2013-12-08 21:45:57

标签: java bots

本周我的班级正在进行机器人竞赛,我们应该让我们的机器人赢得所有人的机器人。比赛是摇滚,纸,剪刀,炸药,水气球。除了水气球和水气球只能击败炸药,炸药击败一切。老师写了战斗竞技场,其他一些机器人,智能机器人,打印机(纸)机器人,随机机器人和他的机器人向我们展示了一些例子。我喜欢智能机器人,我用它来创建我的机器人,显然我需要在机器人中做更多。我不知道还有什么可以添加,以及如何使我的机器人获胜。我还需要跟踪我有多少炸药。

我的问题如下:我可以添加到机器人中以使其获胜以及如何跟踪炸药? 这是我的机器人:

public class herro1cb extends Bot {

public herro1cb(int dynamiteQuantity) {
    super(dynamiteQuantity);
    _dynamiteLeft = dynamiteQuantity;
    setName("Chelsea");
}

@Override
public Move doMove(Move opponentsPrior, int points) {


    switch( opponentsPrior ){
    case Dynamite:
        return _dynamiteLeft > 0 ? Move.Dynamite : Move.WaterBalloon;
    case WaterBalloon:
        return Move.Scissors;
    case Scissors:
        return Move.Rock;
    case Paper:
        return Move.Scissors;
    case Rock:
        return Move.Paper;
    default:
        return _dynamiteLeft > 0 ? Move.Rock : Move.Dynamite;
    }


}

}

以下是扩展内容:

public abstract class Bot implements Comparable<Bot> {

private String _name;
protected int _dynamiteLeft = 0;

public Bot( int dynamiteQuantity ){
    _dynamiteLeft = dynamiteQuantity;
}


public String getName(){
    return this._name;
}
public void setName(String value){
    this._name = value;
}

public abstract Move doMove(Move opponentsPrior,int points);

public void reset(int dynamiteRenewal){
    _dynamiteLeft = dynamiteRenewal;
}


@Override
public int compareTo(Bot o) {
    return +Integer.compare( this.hashCode() , o.hashCode() );
}
}

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果每个人都试图制造一个“比对手更深思熟虑”的机器人,那么你应该尝试保留所选动作的历史记录。试着找出其他机器人想到的迭代次数。没有什么可以阻止你评估每一步动作的整个动作历史。

通过说比对手更进一步思考,我的意思是:

  

我只选择了剪刀,但对手选择了摇滚,所以他打败了我。在   为了获胜,我应该换成纸,但对手会知道   那,并将挑选剪刀。为了击败他的“聪明”举动,   选择摇滚。

如果其他机器人基于这个算法,你可以击败他们,如果你能找到他们正在思考的迭代次数。

我想你无法做出足够智能的东西来击败随机机器人。

备注:现在你的代码中的逻辑基本上胜过了对手之前的动作。