3 en raya

Hola, ¿qué tal?. He empezado este año el primer curso de informática y tengo unas preguntillas con respecto a un juego de 3 en raya que tenemos que hacer:
El programa en cuestión se maneja con el teclado numérico de la derecha correspondiéndose cada número a una casilla. La cosa es que si me podrías decir cuál crees que es la forma más clara de dibujar el tablero teniendo en cuenta que lo estoy haciendo en C++ con el TurboC y no puedo poner cosas muy complicadas. También debo hacer (dentro de la misma función muestra) la forma de que el programa vaya comprobando la posición de las POR o los 0 y muestre por pantalla si hay una ganador o no y por último lo que si que no se me ocurre es, en otra función (introducir_X) cómo hacer para que no permita sobreescribir una POR, por ejemplo, en una casilla en la que ya haya un 0. Agradecería que me echaras una mano. Muchas gracias.
3

3 Respuestas

10.500 pts.
Creo que solo te puedo medio-ayudar. No he trabajado nunca en C y no se como puedes pintar el tablero. Lo que si te puedo decir es como lo hice yo en Visual Basic. Tienes que tener presente que el juego se desarrollara en dos partes, una es la visual por pantalla y otra es la interna. Prepara primero la interna. Un tablero de tres en raya no es más que un array de 3x3. Mueve una POR o una O según la jugada a la variable que le corresponda. Para saber si se ha ganado tienes que realizar ocho comprobaciones, las cuatro laterales del cuadrado, las dos medianas y las dos diagonales. En la parte visual del juego, ves llenando este array según las entradas y comprueba las posiciones. Para saber si ya existe una, solo debes de controlar el valor existente del array antes de aceptar la entrada. No se si me he explicado bien. Si tienes más dudas, que no sean de C, dímelo.
75.900 pts. Ingeniero en Informatica
Vamos por partes.
Creo que la estructura más aconsejable es una matriz de enteros de 3 x 3 de forma que por ejemplo representes las X con un entero (el 1 por ejemplo) y la O con otro entero (el 0 por ejemplo)
Cada vez que alguien pulsa en una tecla, rellenas la casilla correspondiente con X o O según el turno.
La forma más fácil de dibujar en pantalla es que después de que se introduzca una ficha, recorras la matriz completamente. Compruebas cada vez si lo que hay en la matriz es un 0 o 1 y lo escribes. Algo parecido a esto
for (i=0;i<3;i++)
for (j=0;j<3;j++)
{ if (matriz[j]==0 ) then printf("O ");
if (matriz[j]==1 then printf("X ");
else printf (" ");
}
si haces algo asi, conseguiras imprimir en pantalla algo como esto
X X O
O
O X
Por ejemplo, que representa bien el juego, puedes encuadrar el tablero con guiones o movidas, pero eso que te dije es lo más básico.
Luego lo que me dices que no permita sobreescribir es fácil, por ejemplo inicializas al principio toda la matriz con enteros a 3 y en el momento de introducir, miras si en la matriz hay un 3 que querría decir que la casilla esta vacía, De otro modo, esta ocupada con un 0 o con un 1 y no dejas sobreescribir, y listo.
Si no eres capaz de realizar el programa, yo te lo podría hacer.
Si te ha ayudado mi respuesta, valórala de la forma que creas más adecuada.
Muchísimas gracias por tu respuesta. Me has ayudado mucho. Me tienta mucho eso de que me lo hagas tú, pero creo que casi prefiero ver qué soy capaz de hacer. Gracias otra vez.
4.500 pts.
Con respecto a llevar el control de tablero, te convendría crear una matriz del mismo tamaño del tablero, y la llenas por ej con números 3 después cuando cada uno va poniendo cruz o circulo, cuando ponen una cruz en la posición respesctiva de la matriz pones por ej un 1 entonces en cada movimiento de los jugadores verificas si tienes tres números iguales en las distintas posibilidades de formar linea, con respesco a lo de sobreescribir la POR se soluciona el problema ya que cuando quieras mover algo si tienes en la próxima posición un 3 que querría decir que la posición esta vacía vas a poder moverla, sino no, espero que esto te ayude un poco, Saludos. James21Log.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas