Actualización Junio 2021: Si vienes desde aulavirtual.uaa.mx, ¿me puedes mandar los apuntes donde sale la referencia a este artículo? Puedes hacerlo en forma de comentario o por email. Déjame un comentario si quieres artículos similares.
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.
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.
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.
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».
Ahora el siguiente paso, puede ser optimizar las comprobaciones que realiza, y más adelante, programarlo para poder jugar tú solo contra el ordenador.
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
Buen apunte doctor!
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