Ejemplo n.º 1
0
        public PieceMoveTransaction(IPlayer player, VerifiedMove verifiedMove, PositionArrayAccessor <IPiece> pieces, IFieldEffectChecker fieldEffectChecker,
                                    IValueInputProvider <int> valueProvider, bool isTurnEnd)
        {
            Assert.IsNotNull(verifiedMove);
            Assert.IsNotNull(verifiedMove.Player);
            Assert.IsNotNull(player);
            Assert.AreEqual(verifiedMove.Player, player);
            Assert.IsNotNull(pieces);
            Assert.IsNotNull(fieldEffectChecker);
            Assert.IsNotNull(valueProvider);

            this.player        = player;
            this.pieces        = pieces;
            this.valueProvider = valueProvider;

            startPosition = verifiedMove.MovingPiece.Position;    //worldPathに開始地点は含まれないのでこの方法で開始地点を取得
            viaPosition   = verifiedMove.ViaPositionNode;
            endPosition   = verifiedMove.WorldPath.Last();

            this.worldPath = verifiedMove.WorldPath;
            this.isTurnEnd = isTurnEnd;

            pieceMover        = new Mover(pieces);
            waterEntryChecker = new WaterEntryChecker(3, fieldEffectChecker, valueProvider);
            moveFinisher      = new MoveFinisher(pieceMover, new Capturer(pieces));
        }
Ejemplo n.º 2
0
        internal Board(PositionArrayAccessor <IPiece> pieceMap, FieldEffectChecker fieldEffectChecker, IPieceMoveTransactionFactory pieceMoveActionFactory)
        {
            this.pieces                 = pieceMap;
            this.fieldEffectChecker     = fieldEffectChecker;
            this.pieceMoveActionFactory = pieceMoveActionFactory;
            this.moveVerifier           = new PieceMoveVerifier(pieces);

            Width  = pieces.Width;
            Height = pieces.Height;

            onEveryValueChanged.OnNext(Unit.Default);
        }
Ejemplo n.º 3
0
        public static IBoard Create(IPlayer frontPlayer, IPlayer backPlayer)
        {
            IPiece tam = new Minds(PieceColor.Black, new PublicDataType.IntegerVector2(4, 4), null, null); //fieldEffectCheckerに渡すため別途生成

            FieldEffectChecker fieldChecker = new StandardizedRule.FieldEffectChecker(new PositionArrayAccessor <FieldEffect>(BoardMapGenerator.GenerateFieldEffectMap()), tam);

            IPiece[,] piece2DArray = BoardMapGenerator.GeneratePiece2DMap(frontPlayer, backPlayer, tam, fieldChecker);
            PositionArrayAccessor <IPiece> pieceMap = new PositionArrayAccessor <IPiece>(piece2DArray);

            IBoard board = new Board(pieceMap, fieldChecker, new PieceMoveTransactionFactory());

            return(board);
        }
Ejemplo n.º 4
0
        public static IBoard Create(IPlayer frontPlayer, IPlayer backPlayer)
        {
            IPiece tam = new Minds(PieceColor.Black, new PublicDataType.IntegerVector2(4, 4), null, null); //fieldEffectCheckerに渡すため別途生成

            FieldEffect[,] fieldEffectMap = new FieldEffect[, ]
            {
                { FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal },
                { FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal },
                { FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Tarfe, FieldEffect.Normal, FieldEffect.Tammua, FieldEffect.Normal, FieldEffect.Tarfe, FieldEffect.Normal, FieldEffect.Normal },
                { FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Tarfe, FieldEffect.Tammua, FieldEffect.Tarfe, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal },
                { FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Tammua, FieldEffect.Tammua, FieldEffect.Tanzo, FieldEffect.Tammua, FieldEffect.Tammua, FieldEffect.Normal, FieldEffect.Normal },
                { FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Tarfe, FieldEffect.Tammua, FieldEffect.Tarfe, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal },
                { FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Tarfe, FieldEffect.Normal, FieldEffect.Tammua, FieldEffect.Normal, FieldEffect.Tarfe, FieldEffect.Normal, FieldEffect.Normal },
                { FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal },
                { FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal, FieldEffect.Normal },
            };
            StandardizedRule.FieldEffectChecker fieldChecker = new StandardizedRule.FieldEffectChecker(new PositionArrayAccessor <FieldEffect>(fieldEffectMap), tam);

            IPiece[,] piece2DArray = new IPiece[, ]
            {
                { new Officer(PieceColor.Black, new PublicDataType.IntegerVector2(0, 0), backPlayer, fieldChecker), new Horse(PieceColor.Black, new PublicDataType.IntegerVector2(1, 0), backPlayer, fieldChecker), new Chariot(PieceColor.Black, new PublicDataType.IntegerVector2(2, 0), backPlayer, fieldChecker), new General(PieceColor.Black, new PublicDataType.IntegerVector2(3, 0), backPlayer, fieldChecker), new King(PieceColor.Red, new PublicDataType.IntegerVector2(4, 0), backPlayer, fieldChecker), new General(PieceColor.Red, new PublicDataType.IntegerVector2(5, 0), backPlayer, fieldChecker), new Chariot(PieceColor.Red, new PublicDataType.IntegerVector2(6, 0), backPlayer, fieldChecker), new Horse(PieceColor.Red, new PublicDataType.IntegerVector2(7, 0), backPlayer, fieldChecker), new Officer(PieceColor.Red, new PublicDataType.IntegerVector2(8, 0), backPlayer, fieldChecker) },
                { new Shaman(PieceColor.Red, new PublicDataType.IntegerVector2(0, 1), backPlayer, fieldChecker), new Archer(PieceColor.Red, new PublicDataType.IntegerVector2(1, 1), backPlayer, fieldChecker), null, new Tiger(PieceColor.Red, new PublicDataType.IntegerVector2(3, 1), backPlayer, fieldChecker), null, new Tiger(PieceColor.Black, new PublicDataType.IntegerVector2(5, 1), backPlayer, fieldChecker), null, new Archer(PieceColor.Red, new PublicDataType.IntegerVector2(7, 1), backPlayer, fieldChecker), new Shaman(PieceColor.Red, new PublicDataType.IntegerVector2(8, 1), backPlayer, fieldChecker) },
                { new Pawn(PieceColor.Black, new PublicDataType.IntegerVector2(0, 2), backPlayer, fieldChecker), new Pawn(PieceColor.Red, new PublicDataType.IntegerVector2(1, 2), backPlayer, fieldChecker), new Pawn(PieceColor.Black, new PublicDataType.IntegerVector2(2, 2), backPlayer, fieldChecker), new Pawn(PieceColor.Red, new PublicDataType.IntegerVector2(3, 2), backPlayer, fieldChecker), new Vessel(PieceColor.Red, new PublicDataType.IntegerVector2(4, 2), backPlayer, fieldChecker), new Pawn(PieceColor.Red, new PublicDataType.IntegerVector2(5, 2), backPlayer, fieldChecker), new Pawn(PieceColor.Black, new PublicDataType.IntegerVector2(6, 2), backPlayer, fieldChecker), new Pawn(PieceColor.Red, new PublicDataType.IntegerVector2(7, 2), backPlayer, fieldChecker), new Pawn(PieceColor.Black, new PublicDataType.IntegerVector2(8, 2), backPlayer, fieldChecker) },
                { null, null, null, null, null, null, null, null, null },
                { null, null, null, null, tam, null, null, null, null },
                { null, null, null, null, null, null, null, null, null },
                { new Pawn(PieceColor.Black, new PublicDataType.IntegerVector2(0, 6), frontPlayer, fieldChecker), new Pawn(PieceColor.Red, new PublicDataType.IntegerVector2(1, 6), frontPlayer, fieldChecker), new Pawn(PieceColor.Black, new PublicDataType.IntegerVector2(2, 6), frontPlayer, fieldChecker), new Pawn(PieceColor.Red, new PublicDataType.IntegerVector2(3, 6), frontPlayer, fieldChecker), new Vessel(PieceColor.Black, new PublicDataType.IntegerVector2(4, 6), frontPlayer, fieldChecker), new Pawn(PieceColor.Red, new PublicDataType.IntegerVector2(5, 6), frontPlayer, fieldChecker), new Pawn(PieceColor.Black, new PublicDataType.IntegerVector2(6, 6), frontPlayer, fieldChecker), new Pawn(PieceColor.Red, new PublicDataType.IntegerVector2(7, 6), frontPlayer, fieldChecker), new Pawn(PieceColor.Black, new PublicDataType.IntegerVector2(8, 6), frontPlayer, fieldChecker) },
                { new Shaman(PieceColor.Black, new PublicDataType.IntegerVector2(0, 7), frontPlayer, fieldChecker), new Archer(PieceColor.Black, new PublicDataType.IntegerVector2(1, 7), frontPlayer, fieldChecker), null, new Tiger(PieceColor.Black, new PublicDataType.IntegerVector2(3, 7), frontPlayer, fieldChecker), null, new Tiger(PieceColor.Red, new PublicDataType.IntegerVector2(5, 7), frontPlayer, fieldChecker), null, new Archer(PieceColor.Red, new PublicDataType.IntegerVector2(7, 7), frontPlayer, fieldChecker), new Shaman(PieceColor.Red, new PublicDataType.IntegerVector2(8, 7), frontPlayer, fieldChecker) },
                { new Officer(PieceColor.Red, new PublicDataType.IntegerVector2(0, 8), frontPlayer, fieldChecker), new Horse(PieceColor.Red, new PublicDataType.IntegerVector2(1, 8), frontPlayer, fieldChecker), new Chariot(PieceColor.Red, new PublicDataType.IntegerVector2(2, 8), frontPlayer, fieldChecker), new General(PieceColor.Red, new PublicDataType.IntegerVector2(3, 8), frontPlayer, fieldChecker), new King(PieceColor.Black, new PublicDataType.IntegerVector2(4, 8), frontPlayer, fieldChecker), new General(PieceColor.Black, new PublicDataType.IntegerVector2(5, 8), frontPlayer, fieldChecker), new Chariot(PieceColor.Black, new PublicDataType.IntegerVector2(6, 8), frontPlayer, fieldChecker), new Horse(PieceColor.Black, new PublicDataType.IntegerVector2(7, 8), frontPlayer, fieldChecker), new Officer(PieceColor.Black, new PublicDataType.IntegerVector2(8, 8), frontPlayer, fieldChecker) }
            };
            PositionArrayAccessor <IPiece> pieceMap = new PositionArrayAccessor <IPiece>(piece2DArray);

            IBoard board = new StandardizedRule.Board(pieceMap, fieldChecker, new StandardizedRule.PieceMoveAction.PieceMoveTransactionFactory());

            return(board);
        }
Ejemplo n.º 5
0
 //PositionArrayAccessor<IPiece> pieces, IFieldEffectChecker fieldEffectCheckerをコンストラクタの引数にすることも検討
 public IPieceMoveTransaction Create(IPlayer player, VerifiedMove verifiedMove, PositionArrayAccessor <IPiece> pieces, IFieldEffectChecker fieldEffectChecker, IValueInputProvider <int> valueProvider, bool isTurnEnd)
 {
     return(new PieceMoveTransaction(player, verifiedMove, pieces, fieldEffectChecker, valueProvider, isTurnEnd));
 }
Ejemplo n.º 6
0
 public Capturer(PositionArrayAccessor <IPiece> pieces)
 {
     this.pieces = pieces;
 }
Ejemplo n.º 7
0
 public Mover(PositionArrayAccessor <IPiece> pieceMap)
 {
     this.pieceMap = pieceMap;
 }
Ejemplo n.º 8
0
 public FieldEffectChecker(PositionArrayAccessor <FieldEffect> columns, params IReadOnlyPiece[] pieces)
 {
     this.columns = columns;
     this.pieces  = pieces;
 }