Guía para realizar un trabajo universitario sobre un juego de cuatro en raya con una matriz 8x8
Me asignaron un trabajo para UNI de hacer un juegos de 4 en raya con una matriz 8x8, pero tengo muchas confusión, es para ver si me podrías guiar, me esta costando mucho. No pido que me lo realices ni nada solo que me guíes.
1 Respuesta
Respuesta
1
1
Anónimo
Vamos a ver... lo primero que debes es plantear la solución de tu problema de manera lógica. ¿Qué es 4 en raya? ¿Cómo se juega? ¿Cuál es el objetivo? Entre otras interrogantes que te ayuden a resolver el problema. Una vez hecho esto procedes a crear un algoritmo general para la solución. 4 en raya (jugador, jugador): El propósito de este juego es poner cuatro fichas seguidas en línea (horizontal, vertical o diagonal) y evitar que lo haga el otro jugador. La primera fase será que logres que se puedan hacer jugadas en el tablero. Luego hacer que a medida que se hagan jugadas ir verificando si existe un ganador. En el momento en que exista un ganador o el tablero se encuentre lleno. El juego habrá terminado. El algoritmo general será algo como esto: for i:=1 to N do for j:=1 to N do begin m[i,j]:=0; end; cont:=0; jugador:=1; pintar_tablero(m,jugador); repeat cont := cont + 1; pintar_tablero(m,jugador); fin:=juego_terminado(ganador); if(not fin)then begin repeat write('JUGADA:'); read(jugada); until (jugada>=1) and (jugada<=8) and (libre(m,jugada)); for j:=N downto 1 do begin if(m[j,jugada]=0)then begin m[j,jugada]:=jugador; break; end; end; end; if(jugador=1)then jugador:=2 else jugador:=1; until (cont = 48) or (fin); end. Pintar_tablero: lo que haría seria simplemente mostrar en pantalla el tablero del juego. Tienes que recorrer toda la matriz e irla dibujando en pantalla. Libre: necesitas verificar si la columna que se pide jugar no esta totalmente llena antes de proceder a efectuar la jugada. Juego_terminado: este es quizá el procedimiento principal, el se encargara de verificar si ya existe algún ganador en el juego. Las maneras en que un jugador puede ganar es que complete cuatro fichas consecutivas ya será de forma horizontal, vertical o diagonal. Lo que puedes hacer es crear un vector auxiliar de 4 posiciones. Luego ir recorriendo la matriz en los varios sentidos. Recorres cada columna desde la última fila, hacia arriba, cada vez que avances una posición, la guardas a ella y a las primeras tres posiciones que están por encima de la misma en el vector auxiliar. Recorres el vector para ver si todas las fichas que se encuentran en ese trozo son del mismo jugador o no (podrías hacer una función para esto). De ser así indicas que ya ha habido un ganador, sino continúas en la siguiente posición, y nuevamente repites el proceso hasta que llegues al tope máximo, es decir, que encima de la posición en la que te encuentras no hay 3 posiciones o más. Si no se produjo ningún resultado continúas con las demás columnas. Y si no se produjo ningún resultado, procedes a verificar de forma similar las filas, y luego de manera diagonal (es el que es un poco más complicado). Cuando encuentres una ganador devuelves un valor que lo indique con esta función, y así mismo quien ha sido el ganador. En líneas generales esta seria una posible solución al problema. Recuerda que también es posible que haya un juego, jugador vs maquina. En este caso tendrías que crear una función que pueda ayudarte a hacer el papel de la maquina seleccionando un lugar para una nueva jugada. Espero hayas entendido algo... :-D Cualquier aclaración no dudes en preguntar. ¡Mucha suerte! Nota: Por favor valora mi esfuerzo, dando una puntuación a mi respuesta.
Muchas gracias por tu respuesta, me fue de mucha ayuda para obtener la idea general del algoritmo. Si quieres que te pase el algoritmo solo escríbeme. Disculpa la respuesta tan tardía. GRACIAS.