首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >石头,布,剪刀机器人

石头,布,剪刀机器人
EN

Stack Overflow用户
提问于 2013-12-09 05:45:57
回答 1查看 595关注 0票数 1

我的班级这周有一个机器人比赛,我们应该让我们的机器人赢得每个人自己的机器人。比赛是石头,布,剪刀,炸药,水球。炸药可以击败任何东西,除了水球和水球只击败炸药。老师编写了战斗竞技场,以及其他一些机器人,一个智能机器人,一个打印机(纸张)机器人,一个随机机器人,以及他的机器人,给我们展示了一些例子。我喜欢这个聪明的机器人,我用它来创建我的机器人,显然我需要在我的机器人中做更多的事情。我不知道还能添加什么,也不知道如何让我的机器人成为赢家。我还需要跟踪我有多少炸药。

我的问题如下:我可以向机器人添加什么来使其获胜,以及如何跟踪炸药?这是我的机器人:

代码语言:javascript
复制
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;
    }


}

}

下面是扩展的内容:

代码语言:javascript
复制
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() );
}
}

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2013-12-09 05:54:11

如果每个人都在尝试制作一个“比对手思考得更远”的机器人,那么你应该尝试保留所选动作的历史记录。尝试找出另一个机器人提前考虑了多少次迭代。没有什么能阻止你评估你的每一步动作的整个历史。

我说比对手思考得更远,意思是这样的:

我刚刚选择了剪刀,但对手选择了石头,所以他打败了我。为了获胜,我应该换成纸,但对手会知道这一点,并会选择剪刀。为了击败他的“聪明”的举动,选择石头代替。

如果其他机器人基于这个算法,你可以击败他们,如果你能找出他们提前考虑了多少次迭代。

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

备注:你现在在代码中的逻辑基本上击败了对手之前的走法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20459537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档