miércoles, 29 de junio de 2016

Ejemplo de juego en BASIC 3 en Raya.

Uno de los juegos más manidos, en los ratos muertos en el cole, el 3 en raya.

Implementar este juego en BASIC para el ZX Spectrum, nos da la posibilidad de practicar una de las cosas más importantes que hay en la programación, que es la inteligencia artificial (IA o en inglés AI).

Hay muchos algoritmos aplicables a este juego, que se pueden desarrollar en BASIC con más o menos esfuerzo, e incluso hacer que el juego sea "invencible".

La verdad que un juego en el que no podamos ganar, no tiene gracia y además, la IA debería parecerse a nosotros, los humanos, cometiendo errores y tomando decisiones inadecuadas.

Las premisas básicas para implementar la inteligencia del Spectrum a la hora de jugar contra nosotros han sido:

1) Se decide quien juega primero, humano o ordenador de forma aleatoria.

2) Si sale el Spectrum, posiciona su jugada de forma aleatoria.

3) Se comprueba siempre que nadie a ganado, o si  hay un empate.

4) Se comprueba si el jugador humano tiene una jugada para ganar, y se tapa por parte del Spectrum.

5) Si no hay una jugada por parte del jugador humano en la que pueda ganar, el Spectrum hace su siguiente jugada de forma aleatoria, en las casillas que hay libres.

Parece demasiado simple, ¿ verdad ?. Pues bueno, si que es sencillo de programar en el Spectrum  y además, el juego es divertido.

Habrá veces que nos gane otras que empatemos o que gane el Speccy. La aleatoriedad de la un valor añadido al juego, lo hace divertido, pero a la vez (como sabe comprobar si vamos a ganar y nos trata de parar) es lo suficientemente listo como para que el juego tenga dificultad.

El código fuente lo podéis bajar de este enlace.

Como siempre, lo he pasado a código máquina, usando el compilador a MC de HiSoft. La ganancia en velocidad de ejecución es asombrosa.

La versión en MC la podéis bajar de este enlace.

Por último, un vídeo de demostración del juego.






No hay comentarios: