Está en la página 1de 5

ASIGNATURA: FUNDAMENTOS DE PROGRAMACIÓN

PROFESOR: Javier Llorente Ayuso


Actividad de Aprendizaje (AA2)

Ejercicios prácticos de todo el temario.

Introducción
El objetivo de estos ejercicios, que componen una especie de “proyecto final” de curso, es integrar
las herramientas fundamentales, como el uso de funciones, los tipos de datos (simples y
complejos), así como la metodología de la programación estructurada. Para ello, vais a
implementar un pequeño juego de dados.
Es muy conveniente que después de realizar cada parte de un módulo, comprobéis que compile y
que funcione. Si no lo hacéis, tendréis el problema de que será muy difícil localizar un error entre
todo el código no probado, cuando éste surja.
Para estos ejercicios, necesitáis un entorno de desarrollo donde podáis compilar y ejecutar
vuestros programas, al igual que en ejercicios anteriores de esta asignatura. Podéis realizar estos
ejercicios con cualquier entorno de desarrollo de C++ que tengáis, siempre que permitan separar
el programa en diferentes módulos (.cpp y .h)

Enunciado
1 ) Crea un modulo llamado “jugada”, estará formado por dos archivos: el archivo cabecera
“jugada.h” y el archivo fuente “jugada.cpp”.
El archivo de cabecera debe incluir lo siguiente:
– Un tipo enumerado de los tipos de jugada (con el nombre Tipos_Jugada), con los siguientes
valores: unDado, dosDados y otras.
– Definición de un tipo estructurado llamado “Jugada1”, que tenga los campos siguientes:
– El tipo de jugada “tipo_jugada”, usando el tipo enumerado “Tipos_Jugada”
– Un número entero “num_jugado” que representa el número que intentaremos adivinar
antes de tirar el dado o los dados (según sea el tipo de jugada). El número lo elegirá el
jugador (desde el programa principal y será ahí en el main donde controlaremos que esté
entre 1 y 6 para la jugada con un dado y entre 2 y 12 si optamos por la jugada con dos
dados (la suma de los números que salgan entre los dos dados).
– Cantidad de puntos que jugamos, representado por un número entero. Esta cantidad de
puntos no superará el saldo de puntos que tengamos en cada momento (controlaremos
esto también desde el main)
NOTA: Para esto, recuerda que necesitaréis la palabra reservada para definición de tipos
“typedef” y para la definición de estructura “struct”:
typedef struct{
...
}Jugada;
– El prototipo de la siguiente función:
void solicitarJugada(Jugada& jugada);

1 Importante: como norma general escribiremos los nombres de los tipos de datos que definamos en mayúsculas,
diferenciándolos de los nombres de las variables, en minúsculas, siendo por ejemplo Jugada el nombre del tipo y
jugada una variable de ese tipo de datos.
ASIGNATURA: FUNDAMENTOS DE PROGRAMACIÓN
PROFESOR: Javier Llorente Ayuso
Actividad de Aprendizaje (AA2)

Esta función deberá pedir al usuario el tipo de apuesta: “unDado” o “dosDados”. Estos
datos se deben guardar en el parámetro de entrada/salida “jugada” (pasado por referencia
como denota el símbolo “&” delante del nombre “jugada” en la definición de la función) .
Por ejemplo, la primera pregunta se puede formular así:
Introduzca el tipo de jugada ( unDado / dosDados ):
En caso de que el usuario no introduzca un respuesta válida se le deberá volver a
preguntar.
El archivo fuente de este módulo debe incluir la implementación de la función “solicitarJugada”
según la descripción mencionada. Recuerda que el archivo fuente (“jugada.cpp”) debe incluir al
archivo cabecera (i.e. #include “jugada.h”).
Tanto en este módulo como en los siguientes, recuerda que al terminar cada parte debes
comprobar que compila y que funciona si se ejecuta desde el módulo principal (i.e. “main.cpp”).
2 ) Crea un módulo “dado” con su archivo cabecera (dado.h) y su archivo fuente (dado.cpp). Este
módulo debe definir e implementar la siguiente función:
– int tirarDado()
Simula tirar un dado de seis caras, y devuelve un número aleatorio entre 1 y 6. Lo único que
debe hacer esta función es generar dicho número aleatorio y devolverlo al main cuando se
invoque. Para implementar esta función se puede usar la función “rand” de la librería “cstdlib”.
También se debe llamar a la función “srand” al principio de la ejecución del programa principal
tal y como se describe más adelante, para que funcione como un verdadero generador de
números aleatorios.
3 ) Define el módulo “usuario” con su archivos cabecera y fuente, “usuario.h” y “usuario.cpp”
respectivamente. En el fichero de cabecera definiremos lo siguiente:
– Un tipo estructurado llamado “Usuario”, que contenga el nombre del usuario del juego y su
saldo de puntos “saldo” como un número “long int”.
– La declaración de las funciones “void solicitarUsuario(Usuario& usuario);” y “void
actualizarSaldo(Jugador &jugador, int numeroDado, Jugada& jugada);” que se implementarán
en el fichero “usuario.cpp” y que se explican a continuación.
En el fichero fuente (usuario.cpp) se programarán las funciones con el siguiente
comportamiento:
– La función “solicitarUsuario” pide al usuario su nombre “nombre” (de tipo string) y su saldo y lo
almacene en el parámetro (también pasado por refencia “usuario”):
“void solicitarUsuario(Usuario& usuario)”
– La función que tiene como parámetros un usuario, una jugada y un número del dado, y según
el tipo de jugada actualice el saldo de puntos del jugador:
“void actualizarSaldo(Usuario &usuario, Jugada& jugada, int numeroDado)”
Para calcular el nuevo saldo es necesario conocer lo siguiente:
– Si el tipo de apuesta es “unDado” y el usuario acierta el número que sale en el dado,
de forma que “num_jugado” coincide con “numeroDado” incrementa su saldo de puntos
en una cantidad igual a la apostada.
– Si el tipo de apuesta es “dosDados” y el usuario acierta el número que sale de sumar el
resultado de tirar el dado dos veces (que será recibido también a través del parámetro
“numeroDado”), incrementa su saldo de puntos en una cantidad igual al doble de los
puntos jugados “puntos_jugados”.
ASIGNATURA: FUNDAMENTOS DE PROGRAMACIÓN
PROFESOR: Javier Llorente Ayuso
Actividad de Aprendizaje (AA2)

– En cualquier otro caso, el jugador decrementa su saldo en la cantidad de puntos


jugados.

4 ) En la función “main” del módulo principal permite que el usuario juegue a la ruleta, con los
siguientes pasos:
1. Declara una variable de tipo Usuario y otra de tipo Jugada.
2. Pon la siguiente instrucción que permitirá que los números aleatorios sean diferentes en
cada ejecución:
srand(time(NULL));
NOTA: Esta instrucción es complementaria a “rand” y evita que en cada ejecución se
produzca la misma secuencia de números aleatorios.
3. Solicita al jugador sus datos con la función “solicitarUsuario” y almacénalos en la variable
del usuario.
4. Solicita al usuario su jugada con la función “solictarJugada” y guárdala en la variable de la
jugada.
5. Llamando a la función “tirarDado()” generaremos un número que estará entre el 1 y el 6 si
la jugada es de tipo “unDado” y entre 2 y 12 si elegimos el tipo “dosDados”, en este
segundo caso llamaremos dos veces a la función “tirarDado()” y obtendremos el resultado
mediante la suma de las dos tiradas, guárdalo en una variable y muéstralo por pantalla:
" Tiramos el dado y sale el...".
6. Actualiza el saldo del usuario (en la variable que lleva los datos del usuario) con la función:
actualizarSaldo(usuario_actual ,jugada_actual ,resultadoDado)
según la jugada realizada y el número del dado. A continuación indícale al usuario su
saldo. Por ejemplo a un jugador que se llame Juan se le dice:
“Juan, ahora tu saldo es ...”
7. Pregunta al usuario si quiere seguir jugando. En caso de que su respuesta sea positiva, y
el saldo del jugador lo permita (sea mayor que cero), se vuelve al paso 4. En caso
contrario, se acaba la ejecución.

Normas de entrega
Me debéis enviar un archivo “pdf” en el que se muestre el código de todos los archivos de vuestro
programa en C++, también se entregarán los ficheros con el código fuente (.c o .cpp) incluidos en
un archivo comprimido (.zip o .rar).
Es obligatorio que el código que me enviéis lo hayáis compilado, ejecutado y probado.
Recordad que debéis hacer el código lo más legible posible, utilizando nombres identificativos de
las variables y los comentarios oportunos.
ASIGNATURA: FUNDAMENTOS DE PROGRAMACIÓN
PROFESOR: Javier Llorente Ayuso
Actividad de Aprendizaje (AA2)

Anexo: Ejemplo de ejecución del programa.


Introduzca su nombre: Juan
Introduzca su saldo de puntos inicial: 10
--> Usuario actual es ...Juan y partes con un saldo de 10 puntos.
Introduzca el tipo de apuesta (1-Un dado |2- Dos dados): 1
Introduzca el número de la apuesta (de 1 a 6) 4
Por favor, introduzca la cantidad de puntos que desea apostar: 1

Tipo de apuesta solicitada: unDado.


Tiramos el dado y sale el...1
Numero elegido: 4
Puntos jugados: 1

Juan, ahora tu saldo es: 9 puntos


Desea seguir jugando (s/n)?: s

Introduzca el tipo de apuesta (1-Un dado |2- Dos dados): 1


Introduzca el número de la apuesta (de 1 a 6) 2
Por favor, introduzca la cantidad de puntos que desea apostar: 1

Tipo de apuesta solicitada: unDado.


Tiramos el dado y sale el...2
Numero elegido: 2
Puntos jugados: 1

HAS ACERTADO!!!
Juan, ahora tu saldo es: 10 puntos
Desea seguir jugando (s/n)?: s

Introduzca el tipo de apuesta (1-Un dado |2- Dos dados): 2


Introduzca el número de la apuesta (de 2 a 12) 10
Por favor, introduzca la cantidad de puntos que desea apostar: 15
¡¡Tu saldo de puntos es menor que los puntos apostados !!
Por favor, realice una nueva apuesta
ASIGNATURA: FUNDAMENTOS DE PROGRAMACIÓN
PROFESOR: Javier Llorente Ayuso
Actividad de Aprendizaje (AA2)

Introduzca el tipo de apuesta (1-Un dado |2- Dos dados): 2


Introduzca el número de la apuesta (de 2 a 12) 10
Por favor, introduzca la cantidad de puntos que desea apostar: 5

Tipo de apuesta solicitada: dosDados.


Tiramos el dado y sale el...3
Tiramos el dado y sale el....2
Resultado de los dos dados: # # 5
Numero elegido: 10
Puntos jugados: 5

Juan, ahora tu saldo es: 5 puntos


Desea seguir jugando (s/n)?: s

Introduzca el tipo de apuesta (1-Un dado |2- Dos dados): 2


Introduzca el número de la apuesta (de 2 a 12) 10
Por favor, introduzca la cantidad de puntos que desea apostar: 5

Tipo de apuesta solicitada: dosDados.


Tiramos el dado y sale el...6
Tiramos el dado y sale el....1
Resultado de los dos dados: # # 7
Numero elegido: 10
Puntos jugados: 5

Juan, ahora tu saldo es: 0 puntos


No dispones de saldo para seguir jugando .

También podría gustarte