Моят клас има състезание за ботове тази седмица и ние трябва да направим нашите ботове, за да спечелим всички останали ботове. Състезанието е камък, хартия, ножица, динамит, воден балон. Динамитът побеждава всичко освен водния балон, а водният балон побеждава само динамита. Учителят написа бойната арена и някои други ботове, интелигентен бот, бот за принтер (хартия), произволен бот и неговия бот, за да ни покаже някои примери. Хареса ми интелигентния бот и го използвах, за да създам своя и очевидно трябва да направя повече в моя бот. Не съм сигурен какво друго да добавя и как да направя моя бот този, който печели. Също така трябва да следя колко динамит имам.
Въпросите ми са следните: какво мога да добавя към бота, за да печели и как да следя динамита? Ето моят бот:
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() );
}
}
Благодаря предварително!