Exemple #1
0
 public WaterEntryChecker(int threshold, IFieldEffectChecker fieldEffectChecker,
                          IValueInputProvider <int> valueProvider)
 {
     this.threshold          = threshold;
     this.fieldEffectChecker = fieldEffectChecker;
     this.valueProvider      = valueProvider;
 }
Exemple #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);
        }
Exemple #3
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));
 }
Exemple #4
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));
        }
Exemple #5
0
 public static IPiece[,] GeneratePiece2DMap(IPlayer frontPlayer, IPlayer backPlayer, IPiece tam, IFieldEffectChecker fieldChecker)
 {
     return(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) }
     });
 }