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

Posted on domingo, agosto 26, 2012 by Pedro Wave

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.

    2 Response to "Conversión de Datos 3: Juego de Ajedrez con fórmulas"

    .
    gravatar
    VerZul Says....

    Hola Pedro,

    Aun que no soy partidario de aplicar todas estas normas a la hora de jugar al ajedrez, me parece impresionante que hayas creado todo este archivo solo con formulas. ¿Dónde está tu límite?

    La idea de usar CheckBox asociado a la casilla mezclado con formulas iterativas para guardar la primera casilla tocada me ha parecido excelente, muy ingenioso.

    Espero poder jugar algún día, cuando el archivo esté completamente terminado, una partida contigo camarada.

    Un saludo amigo.

    .
    gravatar
    Pedro Wave Says....

    Amigo VerZul,

    Ya veo que no juegas a menudo al ajedrez, porque las normas de una partida, sea de campeonato o no, están para cumplirlas, la primera es "pieza tocada, pieza jugada" y la última es que cada jugador debe escribir la partida en notación algebraica mientras juega, que es algo que le falta a esta versión, ¿te atreves?.

    En tu profesión como analista-programador irás viendo que hacen falta muchas normas y reglas que cumplir para dar por finalizado el desarrollo de un producto informático, comenzando por las reglas de estilo y continuando por las reglas de negocio, y por cualquier norma que nos permita gestionar óptimamente a los equipos de codificación, pruebas, etc.

    Cuando me propuse hacer el ajedrez sin macros, uno de los problemas era saber la casilla seleccionada para lo que, después de varios intentos, usé OptionButtons (botones de opción), que no son exactamente CheckBoxes (casillas de verificación), que prácticamente no se ven con un Zoom del 20% después de ampliar la altura de las casillas más de 10 veces de su tamaño por defecto. Este truco puede servir como idea para otros juegos, aunque el mejor es usar iteraciones en las fórmulas, lo que permite generar programas sin problemas de instalación en empresas que tengan limitada la habilitación de las macros, ¿me entiendes?

    Lo de jugar va a tener que esperar pues ahora estoy enfrascado en otros proyectos muy absorbentes.

    Espero que consigas emplear tu tiempo en lo que más desees, incluso en el ambiente informático, que tan depauperado está últimamente.

    Un abrazo,
    Pedro.

    Leave A Reply

    Dime si te gusta lo que lees y, si no te gusta, dime por qué. Tengo habilitada la moderación de comentarios. Tu comentario se publicará pronto.

    Tell me if you like what you read here and if you don't like, tell me why. I've enabled comment moderation. Your comment will be published ASAP.

    Mi Lista de Blogs- My Blog List