/** * 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); } }