예제 #1
0
        private Boolean HasMoves(Location locTo, Location locFrom, PieceColor color)
        {
            using TemporaryPieceMove _ = board.PerformTemporaryMove(locFrom, locTo);

            if (!IsCheck(color))
            {
                return(true);
            }

            return(false);
        }
예제 #2
0
 private static bool CheckForSafeMoves(Location whiteLocation, Location locTo)
 {
     using (var tempBoard = new TemporaryPieceMove(board, whiteLocation, locTo, board.GetPiece(whiteLocation)))
     {
         tempBoard.Move();
         if (!IsCheckForWhite(tempBoard.board))
         {
             return(true);
         }
     }
     return(false);
 }
예제 #3
0
        private static bool HasSafeMoves(Location whiteLocation, Location locTo, bool hasMoves)
        {
            var tempBoard = new TemporaryPieceMove(board, whiteLocation, locTo, board.GetPiece(whiteLocation));

            using (tempBoard)
            {
                tempBoard.Swap();
                if (!IsCheckForWhite(tempBoard.board))
                {
                    hasMoves = true;
                }
            }
            return(hasMoves);
        }
예제 #4
0
        private bool HasMoves(PieceColor color)
        {
            foreach (var locFrom in board.GetPieces(color))
            {
                foreach (var locTo in board.GetPiece(locFrom).GetMoves(locFrom, board))
                {
                    var  old = board.GetPiece(locTo);
                    bool result;
                    //var temp = new TemporaryPieceMove(board, locFrom, locTo, old);

                    using (var tmp = new TemporaryPieceMove(board, locFrom, locTo, old))
                    {
                        tmp.
                        result = !IsCheckForKing(color);
                    }
                    if (result)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }