Java - el juego del mus en eclipse (java)

 
Vista:
sin imagen de perfil

el juego del mus en eclipse (java)

Publicado por juan (4 intervenciones) el 29/06/2015 15:39:22
El juego del mus es un juego de cartas en el que 4 jugadores, jugando de compañeros dos a dos, tienen como objetivo obtener 40 piedras para ganar un juego. A continuación se da una descripción parcial del juego del mus necesaria para realizar la práctica de programación que se pide. Una descripción completa puede verse en http://es.wikipedia.org/wiki/Mus.
En cada mano del mus se reparten 4 cartas a cada jugador, de una en una comenzando por el primer jugador y siguiendo con el segundo, tercero y cuarto hasta completar las cuatro. En cada mano se juegan 4 tipos de lances o apuestas: grande, chica, pares y juego. Para cada una de estas apuestas se evalúan las cartas de forma diferente:
o Para la grande las cartas mejores son las mayores en número teniendo en cuenta que los treses son reyes y los doses ases. Así de mayor a menor las cartas se ordenan para la grande como: rey o tres, caballo, sota, siete, seis, cinco, cuatro, dos o as. Gana el que más reyes o treses tenga, en caso de empate se miran las siguientes cartas en orden descendente, es decir primero los caballos, y si hay empate después las sotas, y así sucesivamente.
o La jugada de chica es análoga a la de la grande pero en este caso las cartas mejores son las menores y los desempates se dilucidan siguiendo el orden de cartas de menor a mayor.
o Para los pares se cuentan las cartas repetidas y de valor mayor. La mejor jugada son los duples que se produce cuando un jugador tiene o las 4 cartas iguales en número o 2 parejas. La siguiente jugada son las medias, tres cartas iguales en número, y la última jugada es cuando se tiene una única pareja. Los empates en jugadas se dilucidan usando las cartas en el orden de la grande. Es decir siempre son mejores las parejas, los trios o los duples de cartas con un número mayor.
o Por último, para la jugada del juego se evalúan las cartas por número sumando su valor y teniendo en cuenta que los reyes y treses, los caballos y las sotas valen 10, los ases y doses valen 1 y el resto de cartas por su número. La mejor jugada al juego es la 31, después la 32, después 40, y a continuación, en orden descendente, la 37, 36, 35, 34 y 33. Si ningún jugador tiene juego se juega al punto donde las cartas se valoran igual y gana el que más cerca de 30 esté.
Para acumular piedras, los jugadores van puntuando según quién gane cada uno de los lances y teniendo en cuenta que se juega a compañeros, el jugador 1 con el jugador 3, formando la pareja 1, y el jugador 2 con el jugador 4, formando la pareja 2, y lo que obtenga cada jugador va a la pareja. Las puntuaciones se calculan del siguiente modo:
o El que gane la grande se lleva una piedra.
o El que gane la chica se lleva una piedra.
o El que gane los pares se lleva tres piedras si tiene duples, dos si tiene medias y una si tiene pares.
o El que gane el juego se lleva tres piedras por la 31 y dos por cualquier otra jugada. Si nadie tiene juego, gana una piedra el que tenga mejor jugada al punto.
A cartas iguales en cualquier lance gana el jugador que sea mano. Si un jugador gana los pares o el juego, lo gana la pareja y se suman los puntos de pares y juego de los dos jugadores que la componen. La otra pareja no se suma nada si ninguno de sus jugadores gana la jugada de pares o juego.
Se pide un programa que lea por la entrada estándar una baraja española completa, simule un reparto de cartas para una mano del mus y declare cuál es la pareja ganadora de esa mano. Las 40 cartas de la baraja vienen dadas en una única línea y separadas entre sí por un blanco. Las cartas se identificarán con su número (1, 2, 3, 4, 5, 6, 7, 10, 11, 12) y seguido, sin espacios, por la inicial en minúscula de su palo (o, c, e, b). Una vez leída la baraja se repartirán las cartas de una mano a 4 jugadores numerados del 1 al 4 y considerando que la mano se asigna por el número de jugador de menor a mayor. Así la primera mano es el jugador 1, después el 2 y así sucesivamente. El reparto de cartas es el descrito anteriormente. Una vez sumadas las piedras obtenidas por cada pareja, se deberá enviar a la salida estándar los mensajes: "La pareja 1 ha obtenido %d puntos en esta mano." y "La pareja 2 ha obtenido %d puntos en esta mano.", cada mensaje irá en una línea completa y se sustituirá el %d por los puntos obtenidos por al pareja correspondiente.
CON LA SIGUIENTE MODIFICACIÓN
Ahora se jugarán dos manos, la primera con las 16 primeras cartas y la segunda con las siguientes 16 de la baraja. Se imprimirá al final las piedras en total que ha ganado cada pareja en las dos manos.
En esta entrega se podrán modificar todos los ficheros que se requieren en la entrega. En concreto también se podrá modificar el método main de la clase Main, para adaptarlo a ésta modifcación.

CON LA SIGUIENTE MODIFICACIÓN:
Ahora se jugarán dos manos, la primera con las 16 primeras cartas y la segunda con las siguientes 16 de la baraja. Se imprimirá al final las piedras en total que ha ganado cada pareja en las dos manos.

En esta entrega se podrán modificar todos los ficheros que se requieren en la entrega. En concreto también se podrá modificar el método main de la clase Main, para adaptarlo a ésta modifcación.

Ejemplo

Entrada

4c 4o 5b 3c 10c 5c 5o 1c 1o 4e 7c 2o 3b 11e 10o 12c 10b 7o 6e 1b 12o 12b 10e 2e 11o 2b 2c 3e 6c 7b 3o 12e 1e 11c 6b 7e 5e 11b 6o 4b

Salida

La pareja 1 ha obtenido 3 puntos en las dos manos.

La pareja 2 ha obtenido 12 puntos en las dos manos.

Ficheros requeridos
Main.java
1 /**
2 * Clase principal de la práctica y su objetivo es iniciar la ejecución del programa.
3 * El método main no se puede cambiar, pero se pueden añadir nuevos atributos y/o métodos.
4 */
5 public class Main {
6 public final static int NUM_JUGADORES_MUS = 4;
7
8
9 public static void main(String[] args) {
10 java.util.Scanner sc = new java.util.Scanner(System.in);
11
12 // Creo un objeto baraja
13 Baraja baraja = new Baraja();
14
15 //Leo la baraja
16 for (int i=1; i <= Baraja.NUM_CARTAS_BARAJA; i++){
17 Carta c = new Carta(sc.next());
18 baraja.agnade(c);
19 }
20 sc.close();
21
22
23 // Creo los jugadores
24 Jugador[] jugadores = new Jugador[NUM_JUGADORES_MUS];
25 for (int i=1; i <= NUM_JUGADORES_MUS; i++)
26 jugadores[i-1] = new Jugador(i);
27
28 // Doy una mano de cartas para jugar al mus
29 reparteCartasMus(baraja,jugadores);
30
31 int pareja[] = calculaPuntosMusParejas(jugadores);
32
33 System.out.printf("La pareja 1 ha obtenido %d puntos en esta mano.\n", pareja[0]);
34 System.out.printf("La pareja 2 ha obtenido %d puntos en esta mano.\n", pareja[1]);
35
36 }
37
38 }
Baraja.java
1 /**
2 * Clase para representar una baraja española con 40 cartas.
3 */
4 public class Baraja {
5 public final static int NUM_CARTAS_BARAJA=40;
6
7
8 private Carta[] cartas = new Carta[NUM_CARTAS_BARAJA]; //Almacena las 40 cartas de la baraja
9
10
11 }
12
13
Carta.java
1 /**
2 * Clase para representar una carta de la baraja española.
3 */
4 public class Carta {
5
6 private Palo palo; // Almacena el palo de la carta
7 private Numero numero; // Almacena el número de la carta
8
9 }
10
Jugador.java
1 /**
2 * Clase para representar a un jugador del juego del mus.
3 */
4 public class Jugador {
5
6 private int idJugador; //Identificador único de jugador
7 private Mazo mano; //Almacena las cartas del jugador en la jugada actual.
8
9
10 }
11
Mazo.java
1 /**
2 * Representa un mazo de un número no prefijado de cartas de la baraja española.
3 */
4 public class Mazo {
5
6 private Carta[] cartas;
7 }
8
Palo.java
1 /**
2 * Constantes asociadas a los palos de una baraja española.
3 */
4 public enum Palo {
5 //Ordenados de menor a mayor según el orden habitual
6 OROS,
7 COPAS,
8 ESPADAS,
9 BASTOS;
10
11 }
12
Numero.java
1 /**
2 * Constantes asociadas a un número de carta de la baraja española.
3 */
4 public enum Numero {
5 //Ordenados de menor a mayor de forma habitual
6 AS,
7 DOS,
8 TRES,
9 CUATRO,
10 CINCO,
11 SEIS,
12 SIETE,
13 SOTA,
14 CABALLO,
15 REY,
16 }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder