Jugando conecta 4 en C sharp (c#)

Conecta 4 en C# con pequeña Inteligencia Artificial

En este post de programación en C# también conocido como C sharp te enseñaré el juego de Conecta 4. He programado este juego para que se pueda jugar en la consola, pero obviamente puedes adaptarlo a una interfaz gráfica.

Jugando conecta 4 en C sharp (c#)
Jugando conecta 4 en C sharp (c#)

El código escrito en C# simula completamente el juego, y permite jugar en modo humano contra humano, humano contra CPU (con una pequeña IA) y también en modo CPU contra CPU.

A lo largo del post te enseñaré los detalles de este juego, mismo que se basa en mi otro programa ya escrito en lenguaje ANSI C.

Funcionamiento general

Todo el juego de Conecta 4 en c# se desarrolla en una matriz, también conocida como arreglo bidimensional o array de dos dimensiones. Ahí es en donde se dejan caer las piezas.

En cada turno, ya sea del CPU o del Humano, se debe elegir una columna en donde se va a colocar la pieza. Se dice que un jugador gana cuando se pueden conectar 4 piezas en cualquier dirección.

Por cierto, este juego está programado de tal manera que el tablero de juego es libre de tener cualquier cantidad de filas y columnas, además de que se puede cambiar el número de piezas que se deben conectar para ganar el juego.

De este modo podríamos jugar a Conecta 5, Conecta 6, etcétera.

Por cierto, para hacer que el CPU piense y elija una columna ganadora se ha usado este algoritmo.

Funciones ayudantes

Vamos a necesitar ciertas funciones. En primer caso una que nos permita clonar una matriz, pues dentro del juego vamos a simular colocar piezas sobre todo cuando sea el turno del CPU.

La otra función que necesitamos es una que nos dé números aleatorios, ya que necesitamos saber cuál jugador inicia el juego, entre otras cosas.

Trabajando con el tablero

Necesitamos varias operaciones que hacer con el tablero. Por ejemplo, debemos limpiarlo, imprimirlo (mostrando las piezas), validar que las columnas sean correctas, etcétera. Para empezar, el tablero es el siguiente:

Este arreglo bidimensional es en donde se lleva a cabo todo el juego. Hay varias funciones que usan, pero la principal es la siguiente:

Esta función coloca la pieza del jugador en la columna especificada dentro del tablero. También verifica si la columna está llena y si la misma es válida.

Contando conexiones

Dentro del juego necesitamos saber si determinado jugador ha ganado, es decir, que ha conectado más de 4 piezas en cualquier dirección. Las funciones que hacen el conteo son las siguientes:

Simplemente verifican si se hace una línea recta y devuelven el contador.

Ganador y empate

Veamos ahora las funciones que dicen si el usuario es ganador o si se ha dado un empate.

Para determinar si es empate en este juego de conecta 4 en C# simplemente contamos las piezas que formen una línea y si son 4 (o las especificadas para ganar) indicamos el jugador ganador.

En el caso del empate, verificamos si ya no quedan espacios vacíos en el tablero.

Para verificar el ganador:

Inteligencia artificial de Conecta 4 en C sharp

Pasemos a la inteligencia artificial del CPU para que el mismo pueda jugar contra el ser humano. Simplemente se hacen simulaciones del tablero y se elige la mejor columna, siguiendo el algoritmo que mencioné anteriormente.

Puedes leer los comentarios de la función para entender cómo se hace la elección de la columna. En este caso la CPU elige la mejor columna, eligiendo entre ganar o evitar que el oponente gane.

Jugando Conecta 4

Finalmente veamos cómo se desarrolla el juego. Este programa soporta 3 modos, mismos que son:

  1. Humano vs humano
  2. Humano vs CPU
  3. CPU vs CPU

Básicamente es un if muy simple que coloca la columna en el tablero. Lo que cambia es la solicitud de la columna dependiendo del modo, ya que el programa le dice al CPU que piense en una columna o se la pregunta al usuario.

Como puedes ver es un ciclo infinito que se rompe cuando hay un empate o hay un ganador.

Probando el juego

Puedes compilar el juego con cualquier herramienta. Yo uso el compilador del proyecto Mono, pero puedes usar Visual Studio y todas esas cosas que no me agradan de Microsoft (imagina tener que descargar un IDE solo para ejecutar un simple archivo .cs jajaja)

En fin, una vez que tengas el .exe puedes pasarle los valores de un archivo de texto para probar el juego. He incluido varios dentro del repositorio, hay uno para causar un empate, otro para ganar en diagonal, etcétera.

Por ejemplo, si yo quiero causar un empate hago esto:

Conecta4.exe < empate.txt

Obviamente hay que cambiar el nombre del ejecutable.

Poniendo todo junto

No puedo poner y colocar todo el código aquí, pues me llevaría bastante tiempo. Te dejaré el código completo junto con todas las constantes (para que puedas cambiar el tamaño de tablero de juego de Conecta 4 en C# o las piezas a conectar) en GitHub.

Jugando conecta 4 en C sharp (c#)
Jugando conecta 4 en C sharp (c#)

Como te dije anteriormente, se puede hacer en interfaz gráfica. De hecho yo lo hice en JavaScript con GUI usando el mismo algoritmo que en ANSI C, así que lo puedes portar a cualquier lenguaje.

Si quieres puedes jugar en línea en este enlace, y leer más sobre C# en este otro.

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.

Dejar un comentario