BOOM!! - aigora/twE105_1920-boom-1 GitHub Wiki
-
Introducción
¿Qué es BOOM!?
El juego que hemos creado esta basado en el programa de televisión de Antena 3. Te enfrentarás a un gran reto con numerosas fases de preguntas a las que tendrás que responder correctamente para seguir con vida!
Principales objetivos
Acertar el mayor número de preguntas posibles para acumular una buena cantidad de dinero! Al final del juego podrás jugar la fase final donde optas a ganar 100.000 euros!
¿Cómo se juega? (Guía de utilización del programa)
/Puede ayudar a entender el programa el siguiente enlace Diagrama de flujo /
Modo individual
Primero recopilaremos tus datos para que puedas revisar tu partida una vez acabada. Luego, comenzará la aventura con la fase inicial. Serán 4 preguntas donde, si aciertas, irás acumulando dinero. 300,400,500 y 600 euros son los que obtendrás si contestas corretamente a la bomba 1, bomba 2, bomba 3 y bomba 4; respectivamente. Tras la fase inicial, encontraras la bomba bonus! Aquí tendrás que contestar correctamente a 5 preguntas más para seguir sumando dinero. Pero OJO!, si fallas también te restará dinero de lo que lleves acumulado. Concretamente, cada acierto supondrá que te lleves 200 euros mas para tu bolsillo virtual, mientras que cada error descontará 100 de tu dinero acumulado hasta el momento. Finalmente, llega el momento más esperado. Te enfrentas a la Bomba Final! Solos, tú y 10 preguntas. Aciertalas todas y te llevaras el gran BOTE de 100.000 euros! (imagenes ilustrativas)
- https://user-images.githubusercontent.com/47813285/83267143-13702500-a1c4-11ea-96b9-3cfb18f757a9.jpg
- https://user-images.githubusercontent.com/47813285/83267126-0e12da80-a1c4-11ea-9ac2-19656e321fb4.png
Modo 2 jugadores
La dinámica del juego es la misma que en el modo individual, pero ahora te enfrentaras a un rival cuyo objetivo será ganar más dinero que tú para jugar la Fase Final y llevarse el gran BOTE! Por turnos, iréis pasando Fase a Fase acumulando dinero. Justo antes de la bomba final se realizará una comparación de dinero acumulado de ambos participantes, del cual saldrá solo continuará uno hasta el final. (imagenes ilustrativas)
- https://user-images.githubusercontent.com/47813285/83267172-1c60f680-a1c4-11ea-879d-5d6ed06aa998.jpg
- https://user-images.githubusercontent.com/47813285/83267160-19fe9c80-a1c4-11ea-8144-010d68d559a3.png
Funcionalidad básica del programa
Respecto a la funcionalidad básica en primer lugar empleamos una estructura para acumular los datos de la persona, o personas que juegan; la cual cuenta con cuatro tipos de datos : nombre, apellidos, edad, dinero acumulado. Dichos datos podrán ser observados por el jugador un vez terminada la partida en el fichero datospartida.txt. Posteriormente, realizamos un swicht case con el fin de crear dos funcionalidades de modo de juego; como hemos citado ya anteriormente, individual y multijugador. Ambas tienen la implementación diferenciandose en la inclusión en el modo multijugador de un if else if tras la bomba bonus, que determinará que jugador pasa a la bomba final. Dentro de cada fase hemos empleado funciones que recogen el dinero y la acumulan, funciones que sitúan en orden aleatorio las preguntas recogidas en los ficheros, pero también funciones que alternan el orden de las respuestas (funciones y ficheros explicados abajo).
Funciones empleadas y ficheros
En primer lugar, empleamos ficheros con dos funcionalidades. La primera para almacenar todas las funciones, de modo que en un fichero .c introdujimos los prototipos de las funciones empleadas, mientras que en un archivo .h la implementación de las mismas. Con ello obtuvimos un código mas legible y más fácil de manejar. La otra funcionalidad fue crear ficheros de preguntas y respuestas, en los cuales se iba a basar nuestro juego. Acerca de las funciones:
- int PyR1 (): escoge del fichero asociado una pregunta al azar y desordena las respuestas para las bombas 1 y 2, que tienen 3 posibles opciones de respuesta. Pide al usuario a través de scanf una respuesta, que posteriormente verifica. Si se produce un acierto entrega un 1 a través de la varibale s (asignamos a s el valor de 1). Sino asignamos a s el valor de
- int PyR34 (): escoge del fichero asociado una pregunta al azar y desordena las respuestas para las bombas 3 y 4, que tienen 4 posibles opciones de respuesta. Pide al usuario a través de scanf una respuesta, que posteriormente verifica. Si se produce un acierto entrega un 1 a través de la varibale s (asignamos a s el valor de 1). Sino asignamos a s el valor de
- int PyRbonus ():escoge del fichero asociado 5 preguntas al azar y desordena las respuestas para las bombas bonus, que tienen 2 posibles opciones de respuesta. Pide al usuario a través de scanf una respuesta, que posteriormente verifica. Si se produce un acierto entrega un 1 a través de la varibale s (asignamos a s el valor de 1). Sino asignamos a s el valor de
- int PyRfinal ():escoge del fichero asociado 10 preguntas al azar y desordena las respuestas para las bombas final. Pide al usuario a través de scanf una respuesta, que posteriormente verifica. Si se produce un acierto entrega un 1 a través de la varibale s (asignamos a s el valor de 1). Sino asignamos a s el valor de 2.
- int acumulador (): a través de un if else verifica el valor de la variable 's'. Acierto conlleva dinero=dinero+var , siendo var los valores explicados en el modo individual. Fallo conlleva dinero=dinero, es decir, te quedes como estabas.
- int acumuladorBB ():a través de un if else verifica el valor de la variable 's'. Acierto conlleva dinero=dinero+200. Fallo conlleva dinero=dinero-100.
Código y aclaraciones
En lo referido al código, hemos puesto comentarios en el mismo para intentar facilitar la comprensión del mismo, además de recopilar las funciones en otro archivo, debido a que alguna función empleada es productiva pero no la más eficiente.
Resultado final y comparación con objetivos iniciales
En primer lugar, y como se observa en el diagrama de flujo que se encuentra en el apartado de principales objetivos de la wiki, teníamos pensado hacer una fase inicial, una bomba bonus, una bomba final y una bomba para el bote. Finalmente, hemos realizado todo siguiendo ese esquema excepto que decidimos suprimir la bomba bonus, pasando entonces el programa a tener las siguientes fases:
- Fase inicial (4bombas).
- Bomba bonus(que tiene las condiciones de la anterior bomba final).
- Bomba final(que tiene las condiciones de la anterior bomba para el bote).
Por tanto, simplemente hemos suprimido una bomba y renombrado el resto, puesto que la bomba que hemos suprimido tenía condiciones de tiempo límite, que hemos preferido dejar a un lado. Dicho esto, creemos que el programa resultante se parece mucho a la idea que teníamos desde un principio, que hemos intentado que siga todas las pautas correspondientes y que cumple los objetivos planteados por nosotros mismos al inicio de este proyecto; pues hemos aprendido a través de su realización y puesto en práctica conocimientos adquiridos en la asignatura.