24 abr. 2013

Tic-Tac-Toe (3 en raya) en Python

En mi camino por intentar demostrar a algunos que el lenguaje Python es tremendamente sencillo y potente, volví de nuevo a hacer una de las mías e implementé el famoso juego 3 en raya (tic-tac-toe para los americanos).

Como hice con el buscaminas, os dejaré en el enlace todos los archivos fuente que necesita (solo usé 3) así como los recursos gráficos de los que tira. Incluyo además un par de scripts que os permitirá lanzarlo desde el cmd de windows y almacenar las jugadas en un txt.

La aplicación es compatible en Windows (instalando Python 2.7.3 para 32bits y PyGame 1.9.1 para 32bits) y para linux. Hay que tener cuidado con la versión de python que se instala, primero porque la versión de 64bits da problemas con las libreria de pygame hasta que saquen una versión estable, y segundo porque en distros de linux como Ubuntu en 64bits, algunas funciones que usa PyGame no retornan los resultados esperados.

A continuación detallaré como lo he implementado y que funciones permite el juego.

La implementación se ha dividido en 3 ficheros, como comenté al principio de esta entrada:

tic-tac-toe.py: es el fichero principal y el que se debe ejecutar. Carga todos los recursos gráficos a usar así como el bucle principal del juego para configurar una partida nueva.

game.py: este fichero es el encargado de "jugar". Carga los jugadores (ya sean humanos o IA), los turnos, etc.

aiplayer.py: este fichero tiene las funciones de inteligencia artificial para cada uno de los jugadores IA. Si se desea alterar el funcionamiento de un jugador, basta con modificar la función correspondiente al jugador deseado (tienen de nombre __cpuHard(), __cpuEasy(), __cpuMedium()). La otra función importante es makeMove(gameTable), que es la que se lanza cuando le toca a un jugador IA. Recomiendo no tocar esta última y solo editar las otras mencionadas.

En cuanto al juego en si, al iniciarlo aparecerá el menú principal, donde podemos escoger el modo de juego:


PvP: player vs. player. Perfecto para partidas humano contra humano. El jugador 1 será el de la izquierda y tendrá como ficha las rojas (cruces:X). El jugador 2 estará situado a la derecha y tendrá las fichas azules (circulos:O). El turno inicial será escogido aleatoriamente, indicándose con una franja verde en la zona superior:

PvC: player vs. computer. Partida humano contra máquina. El jugador humano siempre será el jugador 1 y la máquina el 2. El turno será escogido aleatoriamente y la dificultad de la máquina la decidirá el jugador antes de iniciar la partida.

CvC: computer vs. computer. Partida máquina contra máquina. Este modo permite analizar el comportamiento de una IA contra otra IA. Primero se seleccionará la dificultad de cada una y a continuación se lanzarán a la batalla. Comenzará el turno de manera aleatoria también.


Las IAs disponibles son representadas con avatares de robots. Cada una utiliza una función de inteligencia diferente:

Deep Blue: implementa una funciona aleatoria.

Blender: implementa una función heurística sencilla.
EDI: implementa una función heurística algo más compleja, pero no es imposible de vencer.






Mínimos:
Cualquier S.O. es válido si tiene:
-Python 2.7.x (32 bits)
-Librerías PyGame para Python 2.7.x (32bits)


Recomendados:
S.O. Linux (cualquier distro, pues posee ya todo preinstalado)




Descargar Proyecto:



Descargas Asociadas:

Python 2.7.x -> http://python.org/getit/

Librerías PyGame -> http://pygame.org/download.shtml


No hay comentarios:

Publicar un comentario