Ejemplo n.º 1
0
 /// <summary>
 ///		Carga el tablero de juego
 /// </summary>
 private void LoadGameBoard(Board.VariationModel variation, Game game)
 {
     if (game.BoardSetup != null)
     {
         // Asigna las propiedades
         variation.Setup.CanBlackCastleKingSide  = game.BoardSetup.CanBlackCastleKingSide;
         variation.Setup.CanBlackCastleQueenSide = game.BoardSetup.CanBlackCastleQueenSide;
         variation.Setup.CanWhiteCastleKingSide  = game.BoardSetup.CanWhiteCastleKingSide;
         variation.Setup.CanWhiteCastleQueenSide = game.BoardSetup.CanWhiteCastleQueenSide;
         if (game.BoardSetup.EnPassantSquare == null)
         {
             variation.Setup.EnPassantCell = null;
         }
         else
         {
             variation.Setup.EnPassantCell = new CellConversor().ConvertCell(game.BoardSetup.EnPassantSquare.Rank, game.BoardSetup.EnPassantSquare.File);
         }
         variation.Setup.FullMoveCount = game.BoardSetup.FullMoveCount;
         variation.Setup.HalfMoveClock = game.BoardSetup.HalfMoveClock;
         variation.Setup.IsWhiteMove   = game.BoardSetup.IsWhiteMove;
         // Interpreta la cadena FEN con las piezas iniciales
         if (game.Tags.TryGetValue("FEN", out string boardPieces))
         {
             variation.Setup.Pieces.AddRange(ParseBoardPieces(boardPieces));
         }
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        ///		Interpreta una variación
        /// </summary>
        internal Board.VariationModel Parse(Game game)
        {
            Board.VariationModel variation = new Board.VariationModel();

            // Carga el setup del tablero
            LoadGameBoard(variation, game);
            // Carga los movimientos
            try
            {
                variation.Movements.AddRange(new GameMovementsParser().Parse(variation, game));
            }
            catch (Exception exception)
            {
                variation.ParseError = $"Error en la interpretación del juego: {exception.Message}";
            }
            // Devuelve la variación
            return(variation);
        }