/**
* Kifu クラスは、対局情報と手順を管理します。
* @author Jiro Suzuki
*/
public class Kifu{
private GameInformation gameInfo;
private OrderOfMoves order;
/**
* 対局情報と手順が空のインスタンスを生成します。
*/
public Kifu(){
gameInfo=new GameInformation();
order=new OrderOfMoves();
}
/**
* 指定された手順を設定します。
* @param order 手順(着手情報の配列)
*/
public void setOrderOfMoves(OrderOfMoves order){
this.order=order;
}
/**
* 手順を取得します。
* @return 手順
*/
public OrderOfMoves getOrderOfMoves(){
return order;
}
/**
* 対局情報を設定します。
* @param gameInfo 対局情報
*/
public void setGameInformation(GameInformation gameInfo){
this.gameInfo=gameInfo;
}
/**
* 対局情報を取得します。
* @return 対局情報
*/
public GameInformation getGameInformation(){
return gameInfo;
}
/**
* 検討用の棋譜のコピーを作成します。
* @param numOfMoves 作成するコピーの手数
* @return 指定された手数までの棋譜情報
*/
public Kifu createExamClone(int numOfMoves){
Kifu kifu=new Kifu();
OrderOfMoves orderCopy=new OrderOfMoves();
for(int i=0;i<=numOfMoves;i++){
Move move=order.getMove(i);
int stoneColor=move.getStoneColor();
int row=move.getRow();
int col=move.getCol();
Move moveCopy=new Move();
moveCopy.setMove(stoneColor,row,col);
orderCopy.add(moveCopy);
}
kifu.setOrderOfMoves(orderCopy);
kifu.setGameInformation(gameInfo);
return kifu;
}
/**
* 着点の情報を一手追加します。
* @param move 着点の情報
*/
public void addMove(Move move){
order.add(move);
}
}