Ejemplo n.º 1
0
        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]));
        }
Ejemplo n.º 2
0
        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;
        }