miércoles, 4 de junio de 2014

El juego de las siete y media. Parte V.

Y por fin, ¡la última modificación para nuestro primer juego! Me hace ilusión que esto avance y vayan saliendo cosillas interesantes. Ahora nuestra baraja es como una de verdad, no puede haber dos cartas iguales y se van gastando. Cuando se termina, se coge una nueva. Algo así:


En esta modificación he decidido incluir algo muy muy importante, el concepto de función. Básicamente una función es un trozo de código, que como se va a repetir más veces, para que quede más claro y más práctico, se saca fuera del main y se le llama cuando sea necesario. Vamos a verlo:



Justo antes del main aparece nuestra función, se llama 'inicializarBaraja' y dentro de ella se han anidado dos bucles 'for' para inicializar toda una matriz de dos dimensiones y también inicializa a 40 un contador. Bien ¿para qué sirve esto? Pues hemos creado una baraja imaginaria (la matriz de dos dimensiones) con 4 palos y 10 cartas cada uno. Le hemos dado un valor bool (verdadero o falso) según se haya utilizado esa carta o no. El contador de baraja es una cuenta atrás desde 40 cada vez que se utiliza una carta, así cuando la baraja se termina, este contador nos avisa.

¿Cómo estamos utilizando la función? Había pensado en poner un post teórico sobre esto, pero sería un rollo y creo que mejor ir viendo casos, así que vamos a ver cómo funciona ésta.

La palabra que hay delante del nombre nos dice el valor que devuelve, en este caso, la palabra 'void' (vacío en inglés) nos dice que no va a devolver nada.

Entre paréntesis detrás del nombre aparecen las variables que se le pasan a la función, en este caso, la baraja y el contador (hay que incluir el tipo de datos y el nombre es independiente). Fíjate que antes del nombre del contador aparece un '&', esto significa (sin entrar en detalles técnicos) que se puede modificar el valor de esa variable, en el caso de la matriz, no es necesario añadirlo.

Poco a poco iremos viendo más funciones y todo irá quedando más claro.

Ya en el 'main' podemos ver que al principio de la ejecución se llama a la función inicializarBaraja para hacer lo que sería "barajar la baraja" (qué mal suena). Después tenemos:



Al hacer una jugada (sacar una carta) comprobamos si la baraja está vacía (contadorBaraja == 0), si es así, avisamos con un mensaje y volvemos a inicializar la baraja, es decir, coger una baraja nueva.

Una vez tenemos los dos números aleatorios (palo y valor), comprobamos en nuestra baraja si esa carta en concreto se ha utilizado ya o no, en caso de que sí se haya utilizado (el valor de su posición sea 'true') utilizamos un 'continue' (continúa en inglés), esto supone avanzar el bucle justo a partir de ese punto, es decir, en nuestro caso, no seguiría mostrando la carta y añadiendo el valor, sino que directamente pasa a sacar una nueva carta y esto se repite hasta que tengamos una carta válida, entonces es cuando ponemos a 'true' su posición en la baraja y restamos uno al contador de la baraja.

Y ale, si no se os ocurre ninguna modificación más, aquí hemos terminado nuestro juego de las siete y media.

1 comentario:

  1. ¿Qué os parece un 3 en raya para la próxima? Al no ser versión visual, quedará algo cutre, pero después haremos la visual con botoncitos y todo eso.

    ResponderEliminar