Vamos a desarrollar una serie de clases para jugar a la baraja.
Una baraja se compone de cartas, que suelen tener un palo y un valor.
Hay dos tipos de barajas clásicas. La francesa, de 52 cartas y la española, de 40. Cada una tiene sus palos y su numeración.
Con la baraja española podemos jugar a juegos como el MUS y con la francesa a juegos como el póquer.
Quiero poder hacer partidas de mus y póquer y me gustaría tener unas clases que me puedan representar los valores de esas partidas e incluso saber que jugador es el que gana.
Por ejemplo, tengo que tener una baraja y de esa baraja tendré que poder barajarla (aleatorizarla) y repartir cartas (obtener cartas de la baraja).
En el caso del mus tengo 4 jugadores y se reparten 4 cartas a cada uno. Hay cuatro comprobaciones: Grande, pequeña, pares y juego. Tendríamos que poder saber cual de los 4 jugadores gana en cada apartado.
En el caso del póquer tenemos un número indeterminado de jugadores (entre 2 y…). Se reparten 5 cartas y tendríamos que saber qué jugador es el que gana. Aquí sólo tenemos una comprobación.
Tengo que identificar que clases voy a implementar. Si tendré o no herencia. Por ejemplo puedo tener una clase abstracta carta de la que deriven española y francesa. Lo mismo con las barajas. De los jugadores querré saber, como mínimo, el nombre y su mano (las cartas que le han tocado)
Hagamos un primer esqueleto sin implementar la funcionalidad, aunque sí indicándola.
En la baraja francesa el valor de una carta es su número, en la española es su número excepto si es un 11 o un 12, que es 10.
Una baraja debe tener todas las cartas. Si es española del 1 al 12 de cada palo (oros, copas, spadas y bastos). Si es francesa del 1 al 13 de cada palo (picas, diamantes, corazones y tréboles).
Una baraja debería poder desordenar las cartas.