Beruflich Dokumente
Kultur Dokumente
Asignatura PROGRAMACIN
Laboratorio de PROGRAMACIN
Grado en Ingeniera Multimedia (1)
Curso 2014-15
Prctica N 6: Pilas
Periodo de realizacin: Semana del 04/05/2015 al 08/05/2015
Fecha lmite de entrega: 6 das despus de la realizacin de la prctica
HAY QUE LLEVAR COPIA IMPRESA DEL GUIN DE PRCTICAS PARA ACCEDER AL LABORATORIO
Objetivos
Material a entregar
Solucin de la prctica: archivo zip o rar con los ficheros de la solucin final de la prctica:
o Pila.h
o Pila.cpp
o Carta.h
o Carta.cpp
o Solitario.h
o Solitario.cpp
o Pr6.cpp
Introduccin
En esta prctica vamos a implementar una versin del juego del solitario de cartas espaolas de
forma que al ejecutar nuestra aplicacin podamos jugar una o varias partidas de este solitario.
El juego requiere el manejo de diferentes montones de cartas implicados en el juego y consiste en
que el jugador mueva una carta de una pila a otra hasta no poder efectuar movimientos vlidos o
tener todas las cartas del mismo palo amontonadas en su correspondiente pila.
En el juego se emplear una baraja espaola con 48 cartas (4 palos y 12 cartas por palo), estando
cada carta representada por un carcter que indique el palo ('O', 'C', 'E', 'B') y un nmero. Antes de
iniciar el juego, el programa debe generar la baraja (en forma de pila) y proceder a barajar las cartas
para que no estn ordenadas. A continuacin, el estado inicial del juego requerir formar los
siguientes montones de cartas (pilas), adems de la propia baraja:
7 montones sobre la mesa: mazo1, mazo2, mazo3, mazo4, mazo5, mazo6, mazo7.
Prctica N 6: Pilas
Asignatura PROGRAMACIN
4 montones donde se irn amontonando las cartas de cada uno de los palos: Palo1, Palo2,
Palo3 y Palo4.
1 montn Auxiliar.
A partir de ah el programa debe permitir al jugador realizar movimientos de cartas entre los
distintos montones, teniendo en cuenta que en cada movimiento se mueve slo una carta (la de
encima del correspondiente montn) y que se debe indicar el montn de donde se quita y el montn
al que se lleva la carta.
Para la implementacin de los distintos montones utilizaremos la implementacin esttica del TAD
Pila. As pues, tendremos 13 pilas que representarn los 13 montones (la baraja, los 7 mazos, los 4
palos y la pila auxiliar) que utilizan en esta versin del solitario.
Los movimientos posibles son:
Hacia las pilas de los palos (Oros, Copas, Espadas y Bastos):
Cuando se encuentran vacas solo se puede mover el as (B1, C1, E1, O1) del palo
correspondiente desde cualquier pila excepto de la Baraja.
Cuando contienen alguna carta solo se puede colocar otra del mismo palo y una unidad
superior desde cualquier pila excepto de la Baraja.
Prctica N 6: Pilas
Asignatura PROGRAMACIN
Cuando estn vacas se puede mover cualquier carta desde cualquier pila excepto de la
Baraja.
Cuando contienen alguna carta solo se puede colocar otra de distinto palo y una unidad
inferior procedente de cualquier pila excepto de la Baraja.
En esta situacin:
El mazo 1 contiene el Rey de oros, el caballo de bastos y la sota de espadas.
El mazo 2 contiene el 5 de copas y el 4 de espadas.
Los mazos 3, 4 y 6 estn vacos.
El mazo 5 contiene las cartas caballo de espadas y sota de copas.
El mazo 7 contiene el 6 de copas.
La pila del palo 1 contiene el as, el 2 y el 3 de oros.
La pila del palo 2 contiene el as de copas,
La pila del palo 3 contiene el as, el 2, el 3, el 4 de bastos,
La pila del palo 4 est vaca.
Grado en Ingeniera Multimedia
Prctica N 6: Pilas
Asignatura PROGRAMACIN
Operaciones:
CrearSolitario() -> Solitario
IniciarJuego(Solitario) -> Solitario
MoverCarta(Solitario) -> Solitario
Sacar5Mas(Solitario) -> Solitario
JuegoFinalizado(Solitario) -> Lgico
MostrarTapete(Solitario)
Axiomas:
Sea sSolitario,
CrearSolitario()
IniciarJuego(s)
MoverCarta(s)
Sacar5Mas(s)
JuegoFinalizado(s)
MostrarTapete(s)
Prctica N 6: Pilas
Asignatura PROGRAMACIN
Ejercicios
Tarea 1 (TAD Carta): Como las distintas pilas almacenarn Cartas, es preciso especificar antes este
tipo de datos. Implementa la clase Carta que responde al siguiente interfaz:
class Carta
{
public:
Carta(); //constructor
void PutPalo(char); //asigna palo a la carta
void PutNumero(int);//asigna nmero a la cara
char GetPalo();
//devuelve el palo de la carta
int GetNumero();
//devuelve el nmero de la carta
//muestra por pantalla la carta segn formato PaloNumero
ostream & operator << (ostream &, const & Carta);
private:
char palo; //'O'=oros, 'C'=copas, 'E'=espadas, 'B'=bastos
int numero; //1..12
};
Tarea 2 (TAD Pila): Implementa el TAD Pila (ficheros Pila.cpp, Pila.h) con representacin
esttica, de manera similar al visto en clase, que almacene nmeros enteros. Incluye en la definicin
de la clase el nmero mximo de elementos que puede almacenar la pila:
static const int MAX = 48;
Tarea 3 (Sobrecarga de operador de salida, clase Pila): Sobrecarga el operador << del TAD
Pila mediante una funcin friend que permita escribir el contenido de la pila:
friend ostream & operator << (ostream &, const & Pila);
Los elementos de la pila deben imprimirse en formato horizontal, y la cima de la pila debe
corresponder al elemento del extremo derecho.
Prctica N 6: Pilas
Asignatura PROGRAMACIN