Вы находитесь на странице: 1из 2

Ejercicio 1. Partida de cartas (2,25 puntos) Cuatro amigos van a jugar al juego de cartas de los SEISES.

Las caractersticas del juego son las siguientes: 1. La baraja contiene 40 cartas divididas en cuatro palos (oros, copas, espadas y bastos). Cada palo consta de 10 cartas numeradas del 1 al 10. 2. Las cartas se reparten en 4 montones, es decir, 10 cartas por jugador.

Jugador1

Jugador2

Jugador3

Jugador4 baraja

3. El funcionamiento de la partida es el siguiente: o El primer jugador juega con la primera carta del montn, Si puede la coloca en la mesa. Si no puede colocar la carta en la mesa, la deja de nuevo en el fondo del montn o Y pasa el turno al siguiente jugador. 4. Un jugador puede colocar su carta en la mesa en 2 casos: o La carta es un 6. o La carta no es 6, pero es una carta consecutiva a otra que s se encuentra en la mesa. Por ejemplo, si tengo el 2 de bastos y en la mesa est el 3 de bastos, si tengo el 8 de oros y en la mesa est el 7 de oros, etc. El juego acaba cuando un jugador se coloca la ltima carta de su montn, es decir, se queda sin cartas.

Utilizando los TADs Baraja y Bicola, (no hay que implementar ninguna operacin de los TADs) TAD Baraja:
type t_palo is (oros, copas, espadas, bastos); type t_rango is integer range 1..10; type t_carta is record Numero: t_rango; Palo: t_palo; end record; type t_baraja is private; procedure inicializar(b: out t_baraja); -- postcondicin: b contiene 40 cartas en orden aleatorio procedure coger_siguiente(c: out t_carta; b: in out t_baraja); -- pre: b tiene al menos una carta -- pos: c contiene la primera carta que tena b inicialmente. -Se ha quitado la primera carta de b function esta_vacia(b: in t_baraja) return Boolean;

TAD Bicolas:
type Bicola is private; procedure inicializar(Bc: out Bicola); -- Inicializa la bicola. function esta_vacia(Bc: Bicola) return boolean; -- Indicar si la cola est o no vaca. procedure aadir_izqquierda(Bc: in out Bicola; E: t_elemento); -- aade el elemento E por el extremo izquierdo de la bicola Bc. procedure aadir_derecha(Bc: in out Bicola; E: t_elemento); -- aade el elemento E por el extremo derecho de la bicola Bc. procedure borrar_izquierda (B: in out Bicola; Elem: out T_Elemento); -- pre: B no est vaca -- post: se ha quitado el elemento ms a la izquierda. Elem contiene ese valor procedure borrar_derecha (B: in out Bicola; Elem: out T_Elemento); -- pre: B no est vaca -- post: se ha quitado el elemento ms a la derecha. Elem contiene ese valor function actual_izquierda (B: in Bicola) return T_Elemento; -- pre: B no est vaca -- post: devuelve el valor de B ms a la izquierda. B no se ha modificado. function actual_derecha (B: in Bicola) return T_Elemento; -- pre: B no est vaca -- post: devuelve el valor de B ms a la derecha. B no se ha modificado.

Se pide: a) Implementar las estructuras de datos necesarias para representar a los jugadores y la mesa con el estado del juego. b) Disear y escribir un subprograma que simule una partida diciendo al final cul ha sido el jugador ganador.

Вам также может понравиться