Skip to main content

‘Coloca 4’, ‘Conecta 4’ o ‘4 en raya’, como prefieras

La entrada de hoy quizás es algo distinta a las demás. Hoy no trato de contaros ninguna historia, o contar mi opinión sobre un tema. Hoy vengo a enseñaros una cosa que hice para estudiar programación que me resultó curiosa, y quedando contento con el resultado, quería compartirla.

Hace dos semanas, el sábado, como viene siendo habitual en mi carrera, tenía un examen parcial. En esta ocasión era de programación en c, y la tarde anterior, estando ya cansado de hacer los típicos ejercicios de calcular modas en matrices, o realizar algunas operaciones en matrices para ver la soltura que tienes manejando estas, decidí salir un poco de lo que estaba marcado para programar el 4 en raya.

Mi idea al programar este juego era no utilizar nada que no fuera a entrar al día siguiente en el examen, ya que al fin y al cabo, quería que me sirviera para estudiar. Lo que nos entraba eran arrays, punteros y esas cosas.

El juego está programado de cero, y no está copiado de ningún sitio. Podría ser mejor, pero ya he explicado cuál era la intención de este. Sería más bonito si al meter una ficha, no se volviera a imprimir el tablero completo, sino que solo se refrescara lo que ya tenemos en pantalla. Pero eso no entraba, así que no lo puse, ya habrá tiempo más adelante si hay ganas. Es más útil que vaya realizando las comprobaciones para decir cuándo hay un ganador, y de esa forma no te tienes que preocupar de comprobar tú si has hecho 4 en raya,

Nada más empezar el juego, te da la opción de escoger entre dos modos de juego. El primero es el clásico, que es como el de toda la vida, 6 filas, 7 columnas y 2 jugadores.

4enrayaclasico

El segundo modo, es el modo libre, que te permite escoger cuántas filas, cuántas columnas y cuántos jugadores quieres que haya. He puesto que el numero de jugadores tenga que ser entre 2 y 4, pero eso se podría cambiar de forma fácil, solo que pensé que ya era suficiente para la idea que tenía, y estar muchos más también implica más caos.

4enrayamodolibre

La dinámica de juego, consiste en ir metiendo números, encima del tubo aparece qué valor debemos introducir para que la ficha caiga ahí. Introducimos un valor y la ficha caerá hasta abajo. Tenemos que conseguir poner 4 fichas seguidas, bien sea en horizontal en vertical o en diagonal.

En caso de que escribamos un valor no válido, por ejemplo el número de un tubo que no hay, o un tubo donde ya no caben más fichas perderemos el turno, recibiendo un mensaje, y pasando este al siguiente jugador. No era difícil darle otra oportunidad al mismo jugador, pero de esta forma, otorgamos una ventaja al jugador que no ha fallado.

Aquí os dejo un ejemplo de la partida seleccionada previamente en modo libre para que veáis el resultado.

4enrayaganador

Las comprobaciones se podrían optimizar mejor, en el caso de las comprobaciones de las filas y de las columnas, compruebo todas las posibilidades posibles en la fila y en la columna donde ha caído la ficha. En el caso de las diagonales, compruebo todas las posibilidades existentes en la matriz. Esto no está optimizado, pero como bien me dijeron ayer, «no eres tú el que hace los cálculos».

Aquí podéis ver el código.

Ahora el siguiente paso, puede ser optimizar las comprobaciones que realiza, y más adelante, programarlo para poder jugar tú solo contra el ordenador.

Eneko Montero

Estudiando teleco e imprimiendo en 3D. A veces hago robotillos. Cuando tengo tiempo escribo algún artículo.

4 comentarios en “‘Coloca 4’, ‘Conecta 4’ o ‘4 en raya’, como prefieras”

  1. Hola Eneko buen juego!
    Al leerlo me he fijado en :
    «Sería más bonito si al meter una ficha, no se volviera a imprimir el tablero completo, sino que solo se refrescara lo que ya tenemos en pantalla»

    No hace falta más que meter:
    for(i=0;i<30;i++) printf("\n");
    justo al empezar la función de "printTablero" y queda mucho mejor. Es una forma que parece 'cutre', pero es la única compatible con cualquier ordenador.

    Salu2

    1. tengo una pregunta, no se si puedan ayudarme, tengo que hacer un conecta 4 en javascirpt ya esta casi listo pero no me valida la victoria, gracias

  2. Pingback: Fut 15 Coins

Deja un comentario