martes, 10 de junio de 2014

Tres en Raya. Parte II.


Por fin, aquí tenemos el main de nuestro juego. Es más corto que los anteriores, cada vez intentaremos que sea más y más pequeño y que el peso del programa recaiga en las funciones.

Al principio vemos las variables más importantes: una matriz 'valores' que guardará los valores del tablero, un contador que cuenta atrás desde 9 para saber si el tablero está completo, una variable para indicar que salimos del programa y una variable 'char' (un carácter) para almacenar la opción que elegimos cuando nos pregunta si queremos seguir jugando o no.

Después podemos ver las llamadas a nuestras funciones. Vamos a recordar la lista de funciones que ya comentamos en la entrada anterior:

       * 'reiniciarTablero' --> Es una función que reinicia el tablero, es decir, lo vacía de fichas.
       * 'pintarTablero' --> Dibuja en pantalla el tablero incluyendo las fichas introducidas.
       * 'comprobarValores' --> Esta función es llamada desde 'pintarTablero' y es la que se encarga de que cuando una ficha está en una casilla, la función que pinta, coloque el "dibujito" que corresponde con la ficha.
       * 'comprobarTablero' --> Es una función para comprobar si el último jugador que ha colocado una ficha ha realizado una jugada ganadora.
       * 'jugada' --> Es la función que permite a un jugador colocar una ficha en el tablero.


Podemos ver en el main la llamada a reiniciarTablero y pintarTablero nada más empezar, es decir, lo primero es reiniciar todo y mostrar el tablero.

Con el do-while hacemos que todo se repita hasta que los jugadores decidan que ya no quieren jugar más (opción 'N' a la pregunta de si quiere volver a jugar). Lo que caracteriza a todos los juegos es justamente un bucle que se repite mientras el jugador no quiera terminar.

Ahora viene algo nuevo e interesante, hemos metido en un if una función. Esto es totalmente posible siempre que el valor que devuelva la función sea coherente con la condición del if.


En este caso, la función jugada devuelve bool (true o false), es decir 100% compatible con la condición del if. ¿Qué supone esto? Pues en este caso para obtener el valor que devuelve la función, debe ejecutarse y una vez ejecutada, comprobamos si todo ha ido bien y si ha habido algún contratiempo, se ejecuta la salida del bucle.

El símbolo '!' delante de una variable bool o una función que devuelve bool significa 'lo contrario', es decir, el if se ejecutará si hay algún contratiempo. El símbolo '||' significa 'OR' (o en inglés) significa que todo será verdadero si se cumple la parte de la derecha 'o' la parte de la izquierda.

Para la llamada a la función jugada, introducimos el número de jugador (0 para redondos y 1 para Xs), el estado actual del tablero (sus valores) y el contador con las casillas que quedan libres. Lo llamamos dos veces para que juegen los dos jugadores una vez en cada ronda.

Si la partida ha finalizado, entramos al if y preguntamos al jugador si quiere jugar otra partida o prefiere dejarlo. Si prefiere jugar otra partida, reiniciamos el juego (vaciar tablero y colocar el contador con el número de casillas vacías a 9),

En la próxima entrada seguimos con las funciones.

1 comentario:

  1. Hoy sin falta subo y comentos las tres funciones que se utilizan en el 'main'.

    ResponderEliminar