Juegos de tablero hay muchos:
- Ajedrez.
- Go.
- Damas.
- Othello, también llamado Reversi.
- Backgamon.
- Etc.
Todos estos juegos se juegan sobre tableros de 8 x 8 casillas o tableros similares. De todos ellos, tradicionalmente se ha considerado que el ajedrez es el rey, aunque el go se ha puesto muy de moda últimamente desde que Google sacara AlphaGo en 2016. IBM ya había sacado Deep Blue veinte años antes, en 1996.
Pues bien, todos estos juegos se pueden programar de forma similar. Los principios de diseño de estos programas los leí hace años en un libro titulado "Aventuras Informáticas", escrito por Alexander K. Dewdney en 1990.
En ese libro hay un capítulo titulado "¿Un programa que juega a las damas sin perder jamás?" donde, precisamente, se describen los criterios de diseño. Me encantaría enlazar aquí una copia del capítulo, así que he escrito a su autor, que afortunadamente todavía vive (nació en 1941), y le he solicitado permiso para añadirlo aquí.
Mientras tanto, tendréis que conformaros con mi resumen:
Todos los programas que desarrollan juegos de tablero, ya sea ajedrez, damas u otros juegos similares, tienen cuatro elementos principales y uno opcional:
- Un árbol de juego.
- Un generador de jugadas.
- Una función de evaluación del tablero.
- Un procedimiento minimax.
- Un procedimiento de poda (opcional).
Por supuesto, a estos elementos básicos se pueden añadir otros, como bases de datos de aperturas, bases de datos de finales, etc.
En las entradas que siguen iremos describiendo estos elementos.
No hay comentarios:
Publicar un comentario