PRÁCTICA 3.
Estructuras repetitivas – Juego del 30
Desarrollar un programa en lenguaje C que implemente un juego de dados para entre 1 y 3
jugadores, cuyo objetivo es llegar lo más cerca posible a 30 puntos sin pasarse. En cada
turno, cada jugador podrá decidir si quiere:
• Tirar un dado (se genera un número aleatorio entre 1 y 6 que se suma a su puntuación),
• Plantarse (deja de tirar y conserva la puntuación que tenga hasta el final de la ronda).
Si un jugador se pasa de 30 puntos, queda eliminado de la partida. Cuando todos los jugadores
se hayan plantado o estén eliminados, la ronda termina y se determina el ganador:
• Gana el jugador con la mayor puntuación sin superar 30.
• Si todos se pasan de 30, no hay ganador (o se declara “ronda sin ganador”).
El programa también debe disponer de un modo en el que la máquina juegue sola utilizando
una estrategia sencilla.
Requisitos funcionales mínimos
1. Número de jugadores
o La partida debe permitir entre 1 y 3 jugadores humanos.
o El programa debe pedir un número entero y comprobar que está en ese rango.
o Si el número es incorrecto, debe pedirlo de nuevo hasta que sea válido.
2. Estructura de la ronda de juego (modo jugadores humanos)
o Cada jugador comienza la ronda con 0 puntos y en estado “jugando” (no
plantado ni eliminado).
o La ronda de juego se desarrolla por turnos, recorriendo los jugadores en orden
(jugador 1, jugador 2, …, último jugador, y vuelve al 1, etc.).
o En el turno de un jugador que aún siga en juego (no plantado y no eliminado),
se debe:
1. Mostrar su puntuación actual.
2. Preguntarle si quiere:
Tirar dado (por ejemplo, opción T)
Plantarse (por ejemplo, opción P)
3. Si tira dado:
Se genera un número aleatorio entre 1 y 6.
Se suma a su puntuación y se muestra el resultado.
Si la puntuación supera 30, el jugador queda eliminado.
4. Si se planta:
El jugador queda marcado como plantado y ya no seguirá
tirando en siguientes vueltas.
o La ronda termina cuando todos los jugadores estén plantados o eliminados.
o Al final de la ronda se mostrará:
Puntuación final de cada jugador.
Indicación de quién ha ganado (o si no ha habido ganador).
3. Modo “juega la máquina”
o El ordenador simulará una partida completa sin intervención del usuario,
siguiendo una estrategia simple para cada jugador.
o Se puede usar, por ejemplo, la siguiente estrategia:
Mientras el jugador tenga menos de 24 puntos, tirar dado.
Cuando tenga 24 puntos o más (pero ≤ 30), plantarse.
o La lógica del juego será la misma:
1 a 3 jugadores (puedes fijar el número o leerlo por teclado).
Recorriendo turnos hasta que todos estén plantados o eliminados.
o Se mostrarán por pantalla:
Las decisiones de la máquina (tirar / plantarse).
Las tiradas y puntuaciones.
El resultado final de la partida.
4. Menú principal
Se aconseja organizar el programa con un menú principal que permita:
1. Configurar partida
o Establecer el número de jugadores humanos (entre 1 y 3).
2. Juegan humanos
o Inicia una ronda de juego con los parámetros configurados en la opción 1.
o No debe permitirse jugar si antes no se ha configurado un número de jugadores
válido.
3. Juega la máquina
o El ordenador simula una partida completa con la estrategia descrita.
o Tampoco debe permitirse si no se ha realizado primero una configuración
mínima (por ejemplo, el número de jugadores).
4. Salir
o Termina el programa.
El programa debe validar las opciones introducidas en el menú (si el usuario introduce una
opción incorrecta, se le debe volver a mostrar el menú).
NOTA: Generación de números aleatorios:
Para simular la tirada de un dado (valores entre 1 y 6):
#include <stdlib.h>
#include <time.h>
int main() {
int dado;
srand((unsigned) time(NULL));
dado = rand() % 6 + 1;
}
Material a entregar
• Fichero con el programa fuente en formato .c.
• El nombre del fichero deberá contener el texto Practica3 y los apellidos y nombre del
alumno.
• En las primeras líneas del código (en forma de comentario) deben constar los datos del
autor (nombre, apellidos, grupo, etc.).