Traducir el blog

Project Chess - PC

Project Chess - PC - Personal Computer

Project Chess is the code name of the project to design the first IBM Personal Computer. The same acronym is used to refer to Personal Computer and the  Project Chess.

The first IBM PC model 5150 was released on August 12, 1981 and was the beginning of the greatest chess match in computer history, in which the goal was to win the battle for the computers to become a ubiquitous and pervasive technology in our lives and, for more 31 years, they are achieving!


My first PC experience

My first contact with the closest thing to a PC was in 1978 with an HP-97 while I was studying at the University. Until 1987 I was surrounded by calculators and computers from the first generation of personal computers and  from my first programs written in assembler, Basic, Fortran or Pascal and I liked computing so much that I have not stopped programming.


In those years I devoured all programs and magazines that fell into my hands. The one I liked by far was BYTE, which included all the innovations in both hardware and software in the early days of PCs


In November 1982 BYTE organized a game contest and my favorite was JETSET - Jet Simulator Electronic Trainer, to fly a plane from takeoff to landing on a computer TRS-80 Model II.

Three years after the appearance of the PC, in 1984 I bought my first personal computer, and still have, but it was shared with my brother. It was a whole Personal Computer - PC but without diskettes.

It was a Sharp MZ-700 that did not even have a monitor so, to connect to the only TV in our house, it had an embedded RF modulator.  To program it included a cassette tape recorder at 1200 bits/second and to editing programs it had a robust keyboard that still works.

The following scheme comes from this MZ-700 page: www.sharpmz.org

Sharp MZ-700
From Wikipedia, the free encyclopedia
MZ-700 series system configuration









The screen was divided into 25 rows x 40 characters in a 8x8 dot matrix and 8 color graphics. There was no language in its ROM 2 KB, used for booting sequence  and operating system (OS) calls. On the A side of a cassette came a BASIC programming language, with which I could develop applications and games on its 64 KB of memory.


Software of the first PCs compatible

In its programming manual said it was a "clean computer" (nothing to do with freedom from virus that had not yet been invented for the first PCs), with his memory completely blank when turned on, and that to use it you should preload a programming language, with the advantage of being able to teach the language desired, although initially included the BASIC "Beginner's All-purpose Symbolic Intruction Code" and said that its structure was the closest to human languages ​​of the time. Most fascinating was that I no longer depended on University or office computers to make my own incursions into computing.

Another program I got was the pioneer of spreadsheets, the VisiCalc for MZ-700 and whose manual said that it was a spreadsheet with a two-dimensional array of 256 columns and a maximum size limited by RAM. It is interesting to read how it was implemented VisiCalc by Bob Frankston

VisiCalc was developed by Personal Software in 1979 for the Apple II and Microsoft developed Multiplan in 1982 to compete with VisiCalc and was installed into the CP/M and MS-DOS, but was followed as sales success by  Lotus 1-2-3 from the January 26, 1983.

Early versions of the Microsoft Flight Simulator were used as the testing software technique, known as benchmark, to test if a PC was fully compatible. If a computer could run smoothly MSFS 1.0 and Lotus 1-2-3 it was 100% IBM PC-compatible and, if it failed, it was not.

A few years after these first PCs a public group of programmers have designed a PC-compatible simulator, the DOSBox in order to run programs and games originally written for MS-DOS operating system from Microsoft in newer computers. The chess game continues!


Project Chess future


Until the advent of computers, programming and play chess with computers was a privilege of a minority with access to expensive computers owned by universities or companies. In 1978, a chess game running on a PC defeated a chess program running on a mainframe that cost 6 million dollars.



The chess program WChess by David Kittinger in 1994 won five of six games against americans grandmasters in the Intel-Harvard Cup "Man vs. Machine". On May 11, 1997 was the day the World Chess Champion, Garry Kasparov  lost to an IBM computer, Deep Blue  This computer was able to analyze 200 million positions per second. In November 2006, the program Deep Fritz was able to emulate Deep Blue with a PC that assessed only 8 million positions per second, but I was able to find an average of 17-18 variations in the middle game by sophisticated heuristic algorithms al, much better than brute-force. In 2009 a chess engine, Pocket Fritz 4, running on a mobile phone reached the grandmaster level.

Seven years ago a club called CCRL "Computer Chess Rating Lists" has been created by testers which analyzes over 1,000 games between chess programs and give Elo points with the level of play this programs achieve. Only two active players reach 2800 Elo points and there are 33 programs that reach it, although not approved by FIDE. You can view the list in this page:
www.computerchess.org.uk


    Proyecto Chess - PC

    Proyecto Chess - PC - Personal Computer

    Proyecto Chess es el nombre en código del Proyecto de diseño del primer Computador Personal de IBM. Las mismas siglas PC sirven para denominar al Project Chess y al Personal Computer.

    El primer IBM PC modelo 5150 fue presentado el 12 de agosto de 1981 y fue el comienzo de la mayor partida de ajedrez de la historia, en la que el objetivo era ganar la batalla para que la informática llegara a ser una tecnología ubicua y omnipresente en nuestras vidas y, desde hace 31 años, ¡lo están consiguiendo!


    Mi primera experiencia con un PC

    Mi primer contacto con lo más parecido a un PC fue en 1978 con un HP-97 mientras estudiaba en la Universidad. Hasta 1987 estuve rodeado de calculadoras y computadoras de la primeras generaciones de ordenadores personales y de mis primeros programas escritos en lenguaje máquina, en ensamblador, en Basic, Fortran o Pascal y me gustó tanto la informática que desde entonces no he parado de programar.

    Lista de las computadoras personales de los años 80

    En aquellos años devoraba todos los programas y revistas que caían en mis manos.  La que mas me gustaba era, con diferencia, BYTE, que incluía todas las novedades tanto del hardware como del software de los primeros tiempos de los PCs.

    Portadas de la revista BYTE con los primeros PCs

    En noviembre de 1982 BYTE organizó un concurso de juegos y mi favorito fue JETSET - Jet Simulator Electronic Trainer, para pilotar un avión desde el despegue hasta el aterrizaje en una computadora TRS-80 Model II.

    Tres años después de la aparición del PC, en 1984 llegó a mis manos mi primer ordenador personal, y que aún conservo, aunque lo compartiera con mi hermano era todo un Computador Personal - PC, pero sin disquetes.

    Era un Sharp MZ-700 que ni siquiera tenía un monitor por lo que lo conectaba al único televisor de la casa mediante el modulador RF incorporado. Para reproducir los programas incluía un lector y grabador de cintas de casete a 1200 bits/segundo y para editar los programas disponía de un robusto teclado que aún funciona.

    El siguiente esquema del MZ-700 procede de la página: www.sharpmz.org

    Sharp MZ-700
    From Wikipedia, the free encyclopedia
    MZ-700 series system configuration









    La pantalla se dividía en 25 líneas x 40 caracteres en una matriz de puntos de 8x8 y con gráficos de 8 colores).  No había ningún lenguaje en la memoria ROM de 2 KB, usada para el boot o secuencia de arranque inicial de la máquina y las llamadas del Sistema Operativo - OS. En la cara A de una casete venía un intérprete del lenguaje de programación BASIC, con el que podía programar aplicaciones y juegos en sus 64 KB de memoria.


    Software de los primeros PCs compatibles

    En su manual de programación decía que era un "computador limpio" (nada que ver con estar libre de virus que aún no se había inventado para los primeros PCs), con su memoria totalmente en blanco al encenderlo, y que para usarlo se le debía cargar previamente un lenguaje de programación, con la ventaja de poderle enseñar el lenguaje que se deseara, aunque inicialmente incluía el BASIC "Beginner's All-purpose Symbolic Intruction Code" (Código de Instrucciones Simbólicas de Todo género para Principiantes) y decía que su estructura era la mas cercana a los lenguajes humanos de la época.  Lo más fascinante era que ya no dependía de los ordenadores de la Universidad o de los de la oficina para hacer mis propias incursiones en la informática.

    Otro programa que conseguí fue el pionero de las hojas de cálculo, el VisiCalc para el MZ-700 y en cuyo manual se decía que era una hoja electrónica con una matriz bidimensional de 256 columnas y un tamaño máximo limitado por la memoria RAM. Es interesante leer como Implementing VisiCalc by Bob Frankston

    VisiCalc había sido desarrollado por Personal Software en 1979 para el Apple II y Microsoft desarrolló Multiplan en 1982 para competir con VisiCalc y lo instaló en los sistemas operativos CP/M y MS-DOS, pero le siguió como éxito de ventas Lotus 1-2-3 desde el 26 de enero de 1983.

    Las primeras versiones del simulador de vuelo Microsoft Flight Simulator se usaron como la técnica de pruebas, conocida como benchmark, para saber si un PC era compatible. Si un computador podía correr sin problemas MSFS 1.0 y Lotus 1-2-3 era 100% IBM PC-compatible y, si fallaba, no lo era.

    Unos años después de estos primeros PCs un grupo público de programadores ha diseñado un simulador de PC-compatible, el DOSBox con el objetivo de poder ejecutar programas y videojuegos originalmente escritos para el sistema operativo MS-DOS de Microsoft en ordenadores más modernos. ¡La partida de ajedrez continua!


    Futuro del Project Chess

    Hasta la llegada de los PCs, el programar y jugar al ajedrez con computadoras era un privilegio de una minoría con acceso a los carísimos ordenadores de las universidades o de las empresas. En 1978, un juego de ajedrez corriendo en un PC derrotó a un programa de ajedrez corriendo en un ordenador central de 6 millones de dólares.

    computerhistory.org - A History of Computer Chess

    El programa de ajedrez WChess de David Kittinger ganó en 1994 cinco de las seis partidas contra grandes maestros norteamericanos en la copa Intel-Harvard "Man vs. Machine".  El 11 de mayo de 1997 fue el día en que el Campeón del Mundo de Ajedrez, Garry Kasparov, perdió contra un computador de IBM, el Deep Blue.  Era capaz de analizar 200 millones de posiciones por segundo.  En noviembre de 2006, el programa Deep Fritz era capaz de emular a Deep Blue con un PC que evaluaba solamente 8 millones de posiciones por segundo, pero que era capaz de buscar una media de 17 a 18 variaciones en el juego medio gracias a sofisticados algoritmos heurísticos, mucho mejores que la fuerza bruta.  En 2009 un motor de juego de ajedrez, Pocket Fritz 4, corriendo en un teléfono móvil alcanzó el nivel de gran maestro.

    Hace 7 años se ha creado un club de testers CCRL denominado "Computer Chess Rating Lists" que analiza las partidas entre más de 1000 programas de ajedrez y les dan lo puntos Elo con el nivel de juego que alcanzan.  Sólo 2 jugadores en activo alcanzan los 2800 puntos Elo y ya hay 33 programas que lo alcanzan, aunque no estén homologados por la FIDE.  Se puede consultar la lista en www.computerchess.org.uk


      Data Conversion 3: Chess Game with formulas

      Chess game with iterative formulas


      In Excel there is something to those who we like the formulas that takes us out of our squares, when you see a circular reference, because a cell refers to itself in a direct or indirect way, forcing to remove or correct the circular reference or, as is the case in this game, to accept it to work by changing the number of times Excel iterates a formula.

      Iteration is the repeated recalculation of a worksheet until a specific numeric condition is met. Excel cannot automatically calculate a formula that refers to the cell — either directly or indirectly — that contains the formula. To use iterative formulas we must change Excel options:
      Enable iterative calculation.
      Maximum number of iterations = 1 in this game.

      Microsoft.com: How to change formula recalculation, iteration, or precision


      Rules and norms of the game of chess

      The first rule that I have in mind is the classic
      Touch-move rule

      Using only formulas, how pieces are touched? How do you get the piece touched? How to know the destination square?

      The trick has been to insert 64 option buttons from form controls, one for each of the 8x8 = 64 squares of the chessboard, called Square11 to Square88, using the nomenclature of numerical chess notation. They are the 64 forms that are grouped in the Squares, as seen in the image to the right of this text to all forms in the Chessgame sheet.

      These radio buttons are not visible through the squares were extended five times and, with a zoom of 20%, the buttons appear to the hinges of the doors of each square box. Each of these buttons takes the size of a square and it is linked to the same cell: Square. Pressing each button generates a different number from 1 to 64, so you know exactly what box is down.

      The position of the piece played is stored in the cell: PositionPiece, until you touch a new square that is a valid position of the played piece, if it is found with cell formulas into MirrorSquare and Move.


      Chess Game Download

      You can download these chess game following this link:



      Chess Game Specifications

      This game lets you play chess between two humans. No takes a game engine (impossible with formulas in Excel, it would not be effective and bad performance).

      Is intended to generate a chessboard with 32 initial pieces to review the moves allowed by the rules of chess and to store games in an Excel spreadsheet to do the database of games played in the NumericGames sheet.

      The specifications of the chess game are:

      1. Chess game between two humans programmed in Excel only with iterative formulas, without macros or VBA.
      2. Chessboard of 64 squares as a resizable form with the ability to flip the board on the side of the white or the black pieces.
      3. Touch of the pieces and squares with 64 radio buttons linked to a single cell: Square.
      4. Rules of short and long castling.
      5. En passant pawn capture.
      6. Option to view the game from the side of the white or the black.
      7. Option to view the cell references in algebraic or numeric notation.
      8. Option to select the style of chess pieces (figurines) or numeric or algebraic style.
      9. Option to display the last movement of a piece, its possible legal moves and attack positions of the white or black pieces.
      10. Option to select the chess game number.
      11. Option to start a new game.
      12. Panel to display each of the moves of the game in numeric notation. Algebraic notation will be added later.
      Yet to be resolved:
      1. Valid positions in the king check.
      2. Checkmate detection.
      3. Promoting pawns.
      4. Save chess games in algebraic notation.
      5. Save FEN notation.
      6. Translate the game into several languages.
      I hope you enjoy and make you enjoy such good times as I have been debugging this chess game.

      To further improve this game I wait for your supportive comments.

      Conversión de Datos 3: Juego de Ajedrez con fórmulas

      Juego ajetreado con fórmulas iterativas
        En Excel hay algo que a los formulianos nos saca de nuestras casillas y es cuando aparece una referencia circular porque una celda se refiere a sí misma de una manera directa o indirecta, lo que obliga a eliminar o corregir la referencia circular o, como es el caso en este juego, a aceptarla para que funcione cambiando el número de veces que Excel itera una fórmula.

        Iteración es el cálculo repetido de una hoja de cálculo hasta que se cumple una condición numérica específica. Para usar fórmulas iterativas se deben cambiar las opciones de Excel:
        Habilitar cálculo iterativo.
        Nº máximo de iteraciones = 1 en este juego.

        Microsoft.com: Cómo aceptar, quitar o corregir una referencia circular



        Reglas y normas del juego del ajedrez

        La primera regla que he tenido en cuenta es la clásica: 
        Pieza_tocada,_pieza_jugada

        Empleando solamente fórmulas, ¿cómo se tocan las piezas? ¿cómo obtener la pieza tocada? ¿como saber la casilla de destino?

        El truco ha sido insertar 64 botones de opción de los controles de formulario, uno por cada una de las 8x8 = 64 casillas del tablero de ajedrez, denominados Square11 a Square88, según la nomenclatura de la notación numéricas del ajedrez.  Son las 64 formas que se agrupan en los Squares, como se puede ver en la imagen a la derecha de este texto con todas las formas de la hoja ChessGame.

        Estos radio-buttons no se ven por estar ampliadas las casillas cinco veces y, con un zoom del 20%, los botones parecen los goznes de las puertas de cada casilla.  Cada uno de estos botones ocupa el tamaño de una casilla y está vinculado con la misma celda: Square.  Al presionar cada botón genera un número distinto del 1 al 64 por lo que se conoce exactamente cuál es la casilla pulsada.

        La posición de la pieza tocada se guarda en la celda: PositionPiece
        hasta que se toca una nueva casilla que sea una posición válida de la pieza tocada si se comprueba con las fórmulas de las celdas: MirrorSquare y Move.


        Descarga del juego del ajedrez

        En este enlace se puede descargar el juego de ajedrez:
        (Descarga desde Google "Excel Download" o Microsoft OneDrive)



        Especificaciones del juego del ajedrez

        Este juego de ajedrez permite jugar entre dos humanos de momento.  No lleva un motor de juego (imposible de hacer con fórmulas en Excel, ya que no sería eficaz y su rendimiento pésimo).

        Se pretende generar un tablero de ajedrez con las 32 piezas iniciales que revise los movimientos permitidos según las reglas del ajedrez y que guarde las partidas en una hoja Excel que haga de base de datos de las partidas jugadas, en la hoja NumericGames.

        Las especificaciones del juego de ajedrez son:

        1. Juego de ajedrez en Excel entre dos humanos programado sólo con fórmulas iterativas, sin macros ni VBA.
        2. Tablero de ajedrez de 64 casillas con formas redimensionables.
        3. Toque de las piezas y casillas con 64 botones de opción vinculados a una única celda: Square.
        4. Normas del enroque corto y largo.
        5. Captura del peón al paso.
        6. Tablero con las piezas del ajedrez en distintos formatos numérico o algebraico en español e inglés y figuras de varias fuentes de texto.
        7. Opción para ver la partida desde el lado de las blancas o de las negras.
        8. Opción para ver las referencias de las celdas en notación algebraica o numérica.
        9. Opción para seleccionar el estilo de las piezas del ajedrez (figurines) o incluso estilo numérico o algebraico.
        10. Opción para visualizar el último movimiento de una pieza, sus movimientos válidos posibles y las posiciones de ataque de las piezas blancas o negras.
        11. Base de datos de las partidas jugadas en la hoja 'NumericGames', guardada cada partida en una columna.
        12. Opción para finalizar una partida por tablas o por rendición y opción para comenzar un nuevo juego.
        13. Panel de visualización de cada uno de los movimientos de la partida en notación numérica.
        14. Traducción del juego a varios idiomas.
        Aún queda por resolver:
        1. Visualizar los movimientos de una partida guardada en modo Play.
        2. Guardar notación algebraica de las partidas.
        3. Guardar notación FEN.
        4. Posiciones válidas en el jaque al Rey.
        5. Detección de jaque mate.
        6. Promoción de los peones.
        Espero que os guste y os haga disfrutar de tan buenos momentos como yo mismo he pasado depurando este ajedrez.  Para seguir mejorándolo espero vuestros comentarios de apoyo.

        Data Conversion 2: Chess Viewer Instructions

        Chess Viewer Instructions

        In the previous article I showed a chess viewer of games stored in Excel spreadsheets in algebraic format in 50 languages​​, including English, Spanish and graphic symbols of the patterns of white and black chess pieces: pawn, rook, knight, bishop, queen and king.


        In this article we will learn to use basic and advanced mode.



        Basic instructions for saving a chess game

        In the sheet 'AlgebraicDB' you should input a new game in algebraic notation in the K column, as the sample games in columns A to J, and will be the game #11.

        1. In the sheet 'ChessDB', if the algebraic notation was in Spanish, enter a 4 in cell K2.
        2. Go to sheet 'Chessboard'
        3. Select game #11 with K1 cell.
        4. Choose the output language for algebraic notation, by example set 1 into K11 cell to show the shapes of the chess pieces.
        5. Increases the K10 cell counter to see the movements of the game.
        6. Decrease counter to undo movements.
        7. Try other controls of the board.
        8. Analyze the game and learns and progresses in the chess game.

        'Game' sheet
        The function of this sheet is to convert a chess game written in complex algebraic notation, with comments and variations, to a simple algebraic notation, only with the movements of each player.


        Note: This sheet should be written only in cells with a yellow background.


        If the chess game is written in several lines, it will be copied in cells I21:I50, a line in each cell. Into column J is the formula to concatenate these cells and convert multiple lines to one, which is achieved in J50 cell.


        If the game is written in a single line, or after obtaining a single line in the J50 cell, is copied to D1.


        In cells D111:D200 comments and variants are removed from the game content between two parentheses "(..)" or between two brackets "{..}" and the values ​​that begin with a dollar sign "$", getting in cell D200 and D2 only the moves of the game.


        The game stored in D2 is converted into its individual moves in the range D3: D101, being the limit of 99 moves played by each player.


        'NumericDB' sheet


        Verifies the correctness of the conversion between algebraic notation and the number notation of the chess games stored in the database that consists of the 'ChessDB', 'AlgebraicDB' and 'NumericDB' sheets.


        The movements are obtained in numerical notation into the 'Notation' sheet, in the range N6:O104. These numerical values ​​must be copied manually in the range E3:F101 of the 'Game' sheet for numerical notation G3:G101 which, in turn, must be copied into the column on the page 'NumericDB' for the corresponding chess game.


        'Notation' sheet compares the obtained numerical notation 'NumericDB' in the range H6:H104 with the numerical data converted from the algebraic notation.



        'AlgebraicDB' sheet

        This sheet is the database of chess games in algebraic notation.


        An stored game in each column, for example to column K are copied in the range K1:K99, a movement in each cell, eg into K1: 1. d4 Nf6


        You can store games in any of the 50 languages sheet 'Languages​​' or in symbolic notation, such as "figurines" for example: 8.♕d2 ♘d7




        'ChessDB' sheet

        The information of the game is stored in this sheet, in the same column in which you saved the game on the 'AlgebraicDB' sheet.


        In row 1 is reflected the number of the game.
        Row 2 shows the language in which you saved the game in algebraic notation, with the number of language.
        Row 4 includes a description of the game.
        In rows range 5:22 is saved the data game, obtaining a summary in row 23.




        'Languages' sheet

        You can enter a couple of new more languages in columns AW and AX.


        'Translate' sheet

        Translates the algebraic format of the game, from the language in which is stored in the sheet 'AlgebraicDB', to the language selected by the user with the K11 cell in the 'Chessboard' sheet.


        The conversion is based on an intermediate language, an algebraic notation with figurines that uses Unicode characters to represent the chess pieces, so they are independent of the languages ​​to be translated.



        'Chessboard' sheet

        This sheet is the graphical user interface of the chess viewer and includes:

        1. A chessboard of 64 squares numbered from a1 to h8, algebraically, and from 11 to 88, numerically.
        2. The black and white pieces in figurines that are formatted with Unicode characters.
        3. A chessboard with chess pieces represented by the letters of the algebraic notation language selected by the user.
        4. A chessboard with pieces symbolized by 1 to 6 for white and -1 to -6 for black.
        5. A chessboard with the numbers representing each of the 64 squares.
        6. Cell K1 to select the number of the database chess game.
        7. Cell L2 to select between numeric and algebraic notation.
        8. Cell K9 to choose the movement of each play.
        9. Cell K10 to see the original position of the piece moved in the last movement.
        10. Cell O10 to change the color of the squares on the chessboard.
        11. Cell R10 to rotate the board and change the player's point of view of the white and black pieces.
        12. Cell K11 to choose the language of the algebraic notation.

        This last feature lets you view games in any of the 50 different languages, including algebraic notation in graphics figurines of the chess pieces.


        What additional features would you like to see in the next version of this chess viewer?
        You can tell me writing a post.

        Conversión de Datos 2: Instrucciones del Visor de Ajedrez

        Instrucciones del Visor de Ajedrez

        Todas las entradas sobre Conversión de Datos:
        1. Conversión de Datos 1: Visor de Ajedrez en Excel
        2. Conversión de Datos 2: Instrucciones del Visor de Ajedrez
        3. Conversión de Datos 3: Juego de Ajedrez con fórmulas
        En el artículo anterior mostré un visor de partidas de ajedrez guardadas en hojas Excel en formato algebraico en 50 idiomas, incluidos el inglés, el español y los símbolos gráficos de las figuras de las piezas blancas y negras del ajedrez: peón, torre, caballo, alfil, dama y rey.

        Puedes descargar el visor de ajedrez desde aquí.

        En este artículo aprenderemos a usarlo de modo básico y avanzado.



        Instrucciones básicas para guardar una partida

        1 - En la hoja 'AlgebraicDB' introduce una nueva partida algebraica en la columna K, como las partidas de ejemplo de las columnas A a J, y será la partida número 11.

        2 - En la hoja 'ChessDB', si la notación algebraica era en español, introduce un 4 en la celda K2.

        3 - Vete a la hoja 'Chessboard'

        4 - Selecciona la partida número 11 con la celda K1.

        5 - Elige el idioma de salida de la notación algebraica, por ejemplo pon un 1 en la celda K11 para mostrar las figuras de las piezas del ajedrez.

        6 - Incrementa el contador de la celda K10 para ver los movimientos de la partida.

        7 - Decrementa el contador para deshacer movimientos.

        8 - Prueba con el resto de controles del tablero.

        9 - Analiza la partida y aprende y progresa en el juego del ajedrez.


        Hoja 'Game'

        La función de esta hoja es convertir una partida de ajedrez escrita en notación algebraica compleja, con comentarios y variantes, a una notación algebraica simple, únicamente con los movimientos de cada jugador.

        Nota: En esta hoja se debe escribir solamente en las celdas con fondo amarillo.

        Si la partida de ajedrez está escrita en varias líneas se deben copiar en las celdas I21:I50, una línea en cada celda. En la columna J está la fórmula para concatenar estas celdas y convertirlas de varias líneas a una sola, lo que se consigue en la celda J50.

        Si la partida está escrita en una única línea, o una vez obtenido una única línea en la celda J50, se copia en D1.

        En las celdas D111:D200 se eliminan los comentarios y variantes de la partida contenidos entre dos paréntesis "(..)" o entre dos corchetes "{..}" y los valores que comienzan por el signo dólar "$", obteniendo en la celda D200 y D2 únicamente los movimientos de la partida.

        La partida almacenada en D2 se descompone en sus jugadas individuales en el rango D3:D101, siendo el límite de jugadas de 99 movimientos por cada jugador.


        Hoja 'NumericDB'

        Permite verificar la corrección de la conversión entre la notación algebraica y la notación numérica de las partidas guardadas en la base de datos compuesta por las hojas 'ChessDB', 'AlgebraicDB' y 'NumericDB'.

        Los movimientos en notación numérica se obtienen en la hoja 'Notation', en el rango N6:O104. Estos valores numéricos se deberán copiar manualmente en el rango E3:F101 de la hoja 'Game' para obtener la notación numérica en G3:G101 que, a su vez, se deberá copiar en la columna correspondiente a la partida en la hoja 'NumericDB'.

        En la hoja 'Notation' se compara la notación numérica obtenida de 'NumericDB' en el rango H6:H104 con los datos numéricos convertidos desde la notación algebraica.


        Hoja 'AlgebraicDB'

        Esta hoja es la base de datos de las partidas en notación algebraica.

        Se guarda una partida en cada columna, por ejemplo para la columna K se copian en el rango K1:K99, un movimiento en cada celda, por ejemplo en K1: 1. d4 Nf6

        Se pueden almacenar las partidas en alguno de los 50 idiomas disponibles de la hoja 'Languages', así como en notación simbólica, tipo "figurines", por ejemplo: 8.♕d2 ♘d7


        Hoja 'ChessDB'

        La información adicional de la partida se guarda en esta hoja, en la misma columna en que se guardó la partida en la hoja 'AlgebraicDB'.

        En la fila 1 está reflejado el número de partida.
        En la fila 2 se indica el idioma en que se ha guardado la partida en notación algebraica, mediante un número de lenguaje.
        En la fila 4 se incluye una descripción de la partida.
        En las filas 5:22 se guardan los datos de la partida, obteniendo un resumen en la fila 23.


        Hoja 'Languages'

        Introduce en las columnas AW y AX un par de idiomas nuevos más.


        Hoja 'Translate'

        Traduce la partida en formato algebraico desde el idioma en que está guardada en la hoja 'AlgebraicDB' al idioma seleccionado por el usuario con la celda K11 de la hoja 'Chessboard'.

        La conversión se basa en emplear como lenguaje intermedio la notación algebraica con figurines que usa caracteres Unicode para representar las piezas del ajedrez, por lo que son independientes de los lenguajes a traducir.


        Hoja 'Chessboard'

        Esta hoja es el interfaz gráfico del usuario con el visor de ajedrez y consta de:

        1 - Un tablero de 64 casillas numeradas de la a1 a la h8, algebraicamente, y 11 a 88, numéricamente.

        2 - Las piezas blancas y negras del ajedrez en formato con figurines que son caracteres Unicode.

        3 - Un tablero con piezas del ajedrez representadas por las letras del idioma seleccionado por el usuario.

        4 - Un tablero con piezas simbolizadas por 1 a 6 para las blancas y -1 a -6 para las negras.

        5 - Un tablero con los números que representan cada una de las 64 casillas.

        6 - Celda K1 para seleccionar el número de partida de la base de datos.

        7 - Celda L2 para seleccionar entre notación algebraica y numérica.

        8 - Celda K9 para elegir el movimiento de cada jugada.

        9 - Celda K10 para ver la posición original de la pieza movida en el último movimiento.

        10 - Celda O10 para cambiar el color de las casillas del tablero.

        11 - Celda R10 para girar el tablero y cambiar el punto de vista del jugador de las piezas blancas o de las negras.

        12 - Celda K11 para elegir el idioma de la notación algebraica.

        Esta última característica permite visualizar las partidas en cualquiera de los 50 lenguajes diferentes, incluida la notación algebraica con figurines gráficos de las piezas del ajedrez.

        ¿Qué característica adicional te gustaría ver en la próxima versión del visor de ajedrez?
        Me lo puedes decir escribiendo un mensaje.

        Conversión de Datos 1: Visor de Ajedrez en Excel

        Introducción a la Conversión de Datos

        Todas las entradas sobre Conversión de Datos:
        1. Conversión de Datos 1: Visor de Ajedrez en Excel
        2. Conversión de Datos 2: Instrucciones del Visor de Ajedrez
        3. Conversión de Datos 3: Juego de Ajedrez con fórmulas
        Una buena interfaz gráfica de usuario no se crea de la nada. Cualquier interfaz gráfico de usuario necesita una gran cantidad de procesos de conversión de datos antes de que se puedan mostrar los gráficos y, por supuesto, requiere de muchos interfaces antes de que pueda ser de utilidad a los usuarios finales.

        Desde el momento en que las entradas se introducen en un programa o sistema, se requieren varios procesos de conversión para obtener la salida deseada. A través de etapas intermedias se convierten los datos, de una notación en otra, usando interfaces de comunicación entre los diferentes procesos y almacenando temporalmente los datos en diferentes formatos.

        Lo más fácil es cuando todas las entradas posibles son conocidas de antemano, pero la realidad es que no es así. El escenario habitual se da cuando no existe un formato exacto de los datos de entrada pero se debe tomar la acción apropiada para que no pase que los datos de entrada no sean reconocidos por el proceso de conversión de datos, lo que impediría obtener los datos de salida correctos.

        Se debe tener mucho cuidado de que esta situación no ocurra, y que todas las entradas sean predecibles y esperadas, y que todos los procesos de conversión de datos sean exactos, generando siempre las mismas salidas, cuando se produzcan las mismas condiciones de entrada.

        Si las especificaciones de conversión de datos son secretas, los procesos de conversión se comportarán como una caja negra de la que sólo se conocen los datos de entrada y los datos de salida. Si las especificaciones son abiertas, usted puede aprender de los métodos de conversión y mejorarlos, aún sin ser el autor de las mismos.


        Ejemplo de Visor de Ajedrez en Excel

        Como un ejercicio de conversión, abierto a la comunidad de usuarios de Excel, he diseñado un Visor de Ajedrez en Excel sin macros, para los aficionados y amantes como yo de ambos mundos maravillosos.

        Los datos de entrada son la notación algebráica de un juego de ajedrez, convertido en primer lugar en la notación numérica que finalmente se convierte, mediante una interfaz, en un gráfico que representa el tablero de ajedrez en el que las piezas de ajedrez se mueven de acuerdo con el juego guardado y, como datos de salida, muestra al usuario este Visor de Ajedrez.



        Esta idea se me ocurrió leyendo un artículo del Excel Hero Blog acerca de un Visor de Partidas de Ajedrez en Excel 2007, realmente impresionante y una solución inteligente, especialmente por no usar nada de VBA para implementarlo.  Se puede ver el resultado en: Excel Hero Chess Game Viewer

        Este Visor de Partidas de Ajedrez creado por Daniel Ferry se basa en la Notación Numérica ICCF, que supone la ventaja de utilizar una máquina de estados como entrada a una tabla dinámica. Esto nos da la posibilidad de ver los movimientos de una partida de ajedrez hacia adelante y hacia atrás. Los movimientos de las piezas de ajedrez son convertidos partiendo de una notación numérica. Los movimientos se designan con cuatro dígitos - los dos primeros son el código de la casilla de la pieza que se mueve y los dos últimos son el código de la casilla de destino.

        La novedad de mi planteamiento de un Visor de Ajedrez es que las partidas de ajedrez se introducen por medio de la Notación Algebraica, aunque su uso puede provocar confusión a las máquinas, e incluso a las personas humanas siguiendo la notación de movimientos diseñada para los seres humanos. Las notaciones de movimiento para las computadoras son menos complejas de utilizar y convertir. Las piezas de ajedrez tienen diferentes nombres e iniciales en lenguas diferentes y este visor es capaz de entender 50 idiomas diferentes, incluidos los símbolos gráficos denominados figurines, como se pueden ver en la nube:


        La versión subida a la nube es completa pero sin controles gráficos ya que Microsoft Excel Web App sólo admite archivos .xlsx, sin VBA ni macros. La versión completa con controles gráficos te la puedes descargar desde el siguiente enlace.
        (Descarga desde Google Drive o Microsoft OneDrive)


        ATENCIÓN: No dejes de leer la siguiente entrada con las instrucciones de uso desde aquí: Conversión de Datos 2: Instrucciones del Visor de Ajedrez

        En la hoja de arriba de Excel Web App, cambia el valor de la entrada de la celda J10 (en amarillo) para mover las piezas del juego de ajedrez que se selecciona con la celda K1 de la hoja Database,  y que contiene algunas partidas de ajedrez guardadas en ella, como:
        1 - The Inmortal Game
        2 - The Evergreen Game
        4 - Kasparov versus the World

        En esta hoja se pueden almacenar más de 250 partidas de ajedrez.

        En próximos artículos me propongo escribir una explicación de cómo me las  ingenié para convertir la notación algebraica de los movimientos de las piezas sobre el tablero, sin el uso de macros, sólo usando fórmulas de Excel para obtener los estados de cada movimiento en notación numérica, de conformidad con las reglas del ajedrez (como la regla de "captura al paso"), fácilmente traducibles en posiciones en el tablero de ajedrez con sus piezas representadas por los símbolos de ajedrez como caracteres Unicode, llamados "figurines", sin ningún tipo de imágenes externas, obteniendo una interfaz gráfica de usuario que nos permite mostrar un buen visor de dos dimensiones de ajedrez.


        ATENCIÓN: No dejes de leer la siguiente entrada con las instrucciones de uso desde aquí: Conversión de Datos 2: Instrucciones del Visor de Ajedrez

        Mi lista de blogs