Programación de juego conecta 4 en Python

Conecta 4 en Python

En este post te mostraré el código fuente del juego conecta 4 (Connect 4) programado con Python, además de explicarte cómo es que ha sido programado y cómo funciona.

Te cuento que éste fue el programa que inspiró a programar el mismo juego en C, C sharp y JavaScript (mismos que encuentras en mi blog); ya que alguien me pidió programarlo en Python pero como no pude publicarlo antes mejor decidí hacerlo en C y luego en sus otras versiones.

El tiempo ha pasado y ahora ya puedo publicar este proyecto de Conecta 4 en Python con todo su código fuente.

Requisitos del juego

Este proyecto consiste en implementar un juego llamado Connect4, cuyas reglas de juego estaremos explicando más adelante.

Se implementará el proyecto en texto. Su proyecto se divide en tres partes básicas: persona persona, persona-máquina y máquina-máquina.

Entonces, la complejidad del proyecto consiste en el desarrollo de un algoritmo que juegue por sí solo. A continuación todas las especificaciones necesarias, deben leerlas antes de comenzar a pensar en el proyecto.

Connect4 es un juego bastante sencillo, sin embargo, para poder implementarlo en un programa deben saber jugarlo bien. A continuación le explicaremos de qué se trata:

El juego está formado por un tablero, y fichas de dos colores diferentes. Es un juego para dos jugadores y cada jugador tiene asignado un color de fichas.

El objetivo de Connect4, como su nombre lo dice, consiste en conectar 4 fichas del mismo color en una línea, en cualquier dirección, horizontal, vertical, y diagonalmente (hacia ambos lados).

El jugador que forme la fila de cuatro fichas primero ganará. Las reglas del juego no son muy complicadas:

  • El jugador que juega primero se escoge al azar.
  • Cada jugador tira una sola ficha por turno.
  • El tablero se compone de columnas, no de filas. Eso quiere decir que las fichas solo pueden
    introducirse en la parte de arriba de una columna, y caer hasta llegar al la parte más baja o encima de otra ficha, no puede quedar flotando por ahí.
  • El juego se gana solo si uno de los jugadores logra forman una fila de cuatro fichas del mismo
    color.
  • Si el tablero se llena de fichas y no hay ganador, el juego quedó empatado

Veamos entonces cómo programar este juego con Python.

Nota: no implementé la parte del CPU contra sí mismo, pero solo basta con invocar a la función del CPU dos veces por turnos, como lo hice en las versiones del otro lenguaje.

Explicación del algoritmo general

Tenemos una matriz que va a ser el tablero de juego. También tenemos constantes para identificar al jugador 1 y al jugador dos.

En el desarrollo del juego simplemente validamos las coordenadas y obtenemos la última fila vacía de determinada columna, contando de abajo hacia arriba para hacer como que la ficha “cae” en el tablero.

Una de las cosas más tediosas es saber si hay un ganador, pues hay que contar si hay una fila de fichas en todas las direcciones, aunque en las versiones del juego más recientes que he programado ya he optimizado esa parte.

Y ya para el caso de que el algoritmo piense por sí mismo ya lo expliqué en otro artículo que te recomiendo leer.

Ajustes del juego

Veamos las constantes y ajustes del juego. Lo pongo aquí porque vamos a usarlas a lo largo de todo el código fuente de Conecta 4:

Ahí puedes ver que tenemos el mínimo y máximo de filas. También tenemos un carácter para identificar a los jugadores, y la cantidad de fichas que hay que conectar para ganar.

Esta constante de CONECTA es interesante, pues así puedes cambiar las fichas que se conectan para ganar. Por lo que teóricamente puedes jugar a Conecta 2, Conecta 3, Conecta 1000, etcétera.

Tablero de juego

Al inicio de todo vamos a crear el tablero de juego. Esto es básicamente inicializar la matriz con un espacio vacío.

Es importante que este espacio vacío esté bien definido en una constante, pues nos va a servir para comparar si podemos poner una ficha ahí.

Por otro lado, veamos la función que imprime el tablero.

En este caso los colores de las fichas deben ser distintos, así que he usado lo que ya expuse en otro post para imprimir texto con color en Python.

Tablero de juego de Conecta 4 en Python con fichas de colores distintos
Tablero de juego de Conecta 4 en Python con fichas de colores distintos

No olvides que debes instalar colorama con pip, así: pip install colorama.

Colocando ficha

Colocar ficha en tablero de Conecta 4
Colocar ficha en tablero de Conecta 4

Ahora veamos el proceso de colocar una ficha, o mejor dicho, dejar caer una ficha. Necesitamos solicitar una columna válida (solicitando un entero válido) y una vez que la tengamos debemos obtener la última fila válida de la misma:

Aquí podemos ver 3 funciones que sirven para colocar la pieza, mismas que guardan también el color del jugador así como el jugador.

La colocación real está en la línea 35, que es cuando ya pasaron todas las validaciones.

Contando fichas conectadas

Conteo de fichas conectadas para saber si jugador gana - Programando en Python
Conteo de fichas conectadas para saber si jugador gana – Programando en Python

Ahora viene la parte tediosa en donde verificamos si hay suficientes fichas conectadas para saber si un jugador gana.

Son varias funciones que se repiten y hacen casi lo mismo. Ya te dije que en versiones de otros lenguajes mejoré eso, pero por el momento tenemos lo siguiente que cuenta las fichas de este juego de Conecta 4 en Python:

Todas las funciones regresan un número que indica cuántas fichas están conectadas, dependiendo del color que contamos.

Algo interesante es que en lugar de hacer un if muy grande, estoy invocando a una función por su nombre como cadena en la línea 135.

Ya para las otras funciones de conteo en todas las direcciones lo que hacemos es iniciar x e y para después ir aumentando dependiendo de la dirección en donde vayamos.

Si encontramos fichas seguidas vamos aumentando el contador, y si no, lo reiniciamos.

Inteligencia artificial de CPU

Conecta 4 programado en Python - CPU eligiendo mejor columna
Conecta 4 programado en Python – CPU eligiendo mejor columna

Ahora veamos la “inteligencia artificial” de la CPU que elige la columna. Queda así:

Jugador contra jugador

Jugando conecta 4 en modo jugador contra jugador
Jugando conecta 4 en modo jugador contra jugador

Recuerda que tenemos dos modos, el de jugador contra jugador y el modo jugador contra CPU. El de jugador contra jugador se ve así:

Y la del jugador contra CPU así:

Poniendo todo junto

Programación de juego conecta 4 en Python
Programación de juego conecta 4 en Python

Ya te mostré las funciones más importantes, pero no son todas. El código completo te lo dejo en GitHub haciendo clic aquí; es un archivo único pero ahí voy a poner todas las actualizaciones en caso de que las haga.

Para terminar te dejo con enlaces a Conecta 4 en C, C# y JavaScript. También te dejo más programas en Python.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

1 comentario en “Conecta 4 en Python”

Dejar un comentario