コード例 #1
0
ファイル: ChessStateTests.cs プロジェクト: Maniulo/GameWarden
        public void IsUnderAttackEmpty()
        {
            var s = new ChessState();
            var players = new List<Player> { new Player(1), new Player(2) };
            var from = new Position(1, 1);
            var to = new Position(2, 2);
            s[from] = ChessPieceFactory.CreatePiece('K', new EnglishFENPresentation(), players);
            s[from].Move(from);

            Assert.IsTrue(s.IsUnderAttack(to, players[1]));
        }
コード例 #2
0
ファイル: Castling.cs プロジェクト: Maniulo/GameWarden
        private Boolean IsKingsPathFree(Position from, Position to, ChessState cState)
        {
            Boolean result = true;

            switch (CType)
            {
                case CastlingType.Kingside:
                    for (int kingPathFile = from.File + 1; kingPathFile <= to.File; ++kingPathFile)
                        result &= !cState.IsUnderAttack(new Position(kingPathFile, from.Rank), cState[from].Player);
                    break;
                case CastlingType.Queenside:
                    for (int kingPathFile = from.File - 1; kingPathFile >= to.File; --kingPathFile)
                        result &= !cState.IsUnderAttack(new Position(kingPathFile, from.Rank), cState[from].Player);
                    break;
            }

            return result;
        }