Examen Final#

Generala#

La generala es un juego de dados muy popular. Se utilizan 5 dados y el objetivo es obtener el máximo puntaje en once juegos diferentes. En cada turno, cada jugador puede tirar los dados hasta tres veces seguidas, intentando obtener algunos de los juegos posibles:

  • Doble: Se forma con dos grupos de dos dados iguales y otorga 10 puntos (por ejemplo 2-2-3-3-5).

  • Escalera: Se forma con una progresión de números. Hay tres posibilidades: 1-2-3-4-5 (escalera menor), 2-3-4-5-6 (escalera mayor) o 3-4-5-6-1. Otorga 20 puntos.

  • Full: Se forma con dos grupos de dados iguales, uno de tres y otro de dos dados. Otorga 30 puntos (por ejemplo, 4-4-4-1-1).

  • Póker: Se forma con cuatro dados iguales. Otorga 40 puntos.

  • Generala: Se forman cinco números iguales en dos o tres tiros. Otorga 50 puntos.

  • Generala Doble: Se forma con cinco números iguales, y otorga 100 puntos si ya se obtuvo el juego de generala en alguna otra mano.

Si alguno de los juegos anteriores sale directamente al arrojar los 5 dados, se denomina juego servido, se le añaden 5 puntos al juego que haya resultado. Por ejemplo, si la tirada es 3-3-3-6-6, es un full servido y se otorgan 35 puntos.

De no ser posible ninguno de los anteriores, el jugador puede sumar números iguales y asignarlos a los juegos del uno al seis.

Una vez que cada jugador realiza alguno de los juegos, este queda cerrado y no puede volver a obtenerlo. Por ejemplo, si un jugador ya obtuvo el Poker, y su juego es 4-4-4-4-2, podrá asignar 4+4+4+4 al juego 4, o 2 al juego 2.

El jugador arroja los cinco dados en la primer tirada. En cada una de las tres tiradas, el jugador podrá separar aquellos dados que le resulten útiles, y seguir jugando con el resto. Si la suerte le fuera desfavorable, puede no separar ningún dado y arrojar los cinco dados en la segunda y tercer tirada.

El propósito de este problema es simular el juego de la generala.

1 Un sólo jugador#

Comience simulando el juego para un sólo jugador, esto es, simule las tres tiradas de un solo jugador. El programa debe

  • ejecutar la primer tirada,

  • mostrar las caras de los dados que resulten en la tirada,

  • implementar una manera sencilla para que el usuario pueda seleccionar qué dados separa y cuáles volverá a arrojar

  • mostrar los juegos habilitados y los juegos cerrados, y el total de puntos que obtuvo hasta el presente juego.

  • Extra: mostrar los juegos posibles y la probabilidad de obtener cada juego.

Hints:

  • Utilice un generador de números random para realizar la tirada (No, no le pedimos que simule la física de cinco dados arrojados sobre una mesa…).

  • Use las figuras del directorio generala que contienen las seis caras posibles de un dado.

2 Varios jugadores#

Extienda el código para que varios jugadores puedan jugar. El programa debe

  • Pedir el nombre de cada jugador

  • Una vez definidos todos los jugadores, sortear el orden de juego.

  • llevar el puntaje de todos los jugadores en una tabla

  • mostrar la tabla de puntajes

3 Simulación#

Construya un programa que juege automáticamente, de modo tal que un usuario pueda jugar contra la computadora.