Projeto de Software Orientado a Objeto

Descrição do Projeto - Período 2001.1


Você deve implementar o jogo de paciência descrito abaixo. A interface gráfica não precisa ser caprichada; isto é, não há necessidade de desenhar cartas, fazer drap-and-drop, etc. Basta mostrar o valor da carta de alguma forma. Por outro lado, seu programa deve usar uma arquitetura com isolamento entre a lógica de negócio e a GUI. Exponha as interfaces da lógica de negócio através de uma API. Coloque uma linguagem de script simples como camada acima da API para possibilitar jogar usando uma interface a caractere. Em seguida, uma interface gráfica pode substituir a interface a caractere.

Um dos objetivos do projeto é de usar o maior número de design patterns possível. Pense em formas de maximizar a flexibilidade do código. Por exemplo, seria fácil alterar a regra para permitir a construção para baixo sem consideração de naipe?

O projeto será avaliado através de 4 milestones:

Descrição do Jogo Klondike (Paciência)

Objeto do jogo

Mover todas as cartas para as fundações.

Layout

Opções

História

Klondike é o jogo básico de paciência no Windows (o jogo que acompanha o Windows). Ele provavelmente foi inventado na corrida ao ouro no Klondike no final do século 19. É conhecido por muitos nomes, entre os quais: Chinaman, Fascination, Triangle, Patience (Paciência no Brasil) e Solitaire. Na Inglaterra, é frequentemente chamado de Canfield. Esta versão é, na realidade, uma variação do verdadeiro jogo Klondike, o qual não permite redeals.

Glossário de termos

Fundação

Pilha de cartas onde o objetivo é construir sobre uma cartas base, normalmente numa sequência. Na maioria dos jogos, as fundações são contruídas "para cima por naipe", embora esta regra varie. Também, uma vez que cartas são movidas para fundações, elas normalmente não podem ser movidas novamente. Ganha-se a maioria dos jogos de paciência quando todas as cartas foram movidas para as fundações.

Tableau

Pilhas de cartas onde a construção (ou empacotamento) é normalmente permitido. Cartas podem ser empacotadas nas cartas expostas de cada pilha, de acordo com regras que variam de jogo para jogo. Normalmente, o jogo inicia com um certo número de cartas em cada pilha.Quando todas as cartas de uma pilha tableau foram jogadas em outro lugar, há normalmente uma regra indicando se, e que tipo de cartas podem ser movidas para o lugar vazio.

Estoque

Uma pilha contendo o restante das cartas quando as demais foram arrumadas para o jogo. Cartas são normalmente retiradas do estoque e jogadas de alguma forma, por exemplo, para uma pilha de descarte ou para as pilhas tableau.

Pilha de descarte

Uma pilha onde cartas não jogáveis são colocadas. Normalmente, a carta no topo da pilha de descarte pode ser jogada em outras pilhas. Em alguns jogos, a pilha de descarte pode ser invertida para assumir a posição de pilha de estoque. Isso se chama "redeal".

Reserva

Um grupo de pilha(s) nas quais a construção normalmente não é permitida. Em alguns casos, todas as cartas de uma reserva estão disponíveis para o jogo, enquanto em outros casos, apenas a carta de cima está disponível.

Construir para cima em naipe

Jogue uma carta de um valor acima e do mesmo naipe da carta alvo. Por exemplo, jogue um 5 de copas.gif (897 bytes) num 4 de copas.gif (897 bytes).

Construir para baixo em naipe

Jogue uma carta de um valor abaixo e do mesmo naipe da carta alvo. Por exemplo, jogue um 8 de ouros.gif (889 bytes) num 9 de ouros.gif (889 bytes).

Construir para cima sem consideração de naipe

Jogue uma carta de um valor acima da carta alvo e de qualquer naipe. Por exemplo, jogue um 9 de copas.gif (897 bytes) num 8 de espadas.gif (901 bytes).

Construir para baixo sem consideração de naipe

Jogue uma carta de um valor abaixo da carta alvo e de qualquer naipe. Por exemplo, jogue um 9 de copas.gif (897 bytes) num 10 de espadas.gif (901 bytes).

Construir para cima alternando cores

Jogue uma carta de um valor acima da carta alvo e trocando a cor da carta. Por exemplo, jogue um 9 de copas.gif (897 bytes) num 8 de espadas.gif (901 bytes).

Construir para baixo alternando cores

Jogue uma carta de um valor acima da carta alvo e trocando a cor da carta. Por exemplo, jogue um 7 de copas.gif (897 bytes) num 8 de espadas.gif (901 bytes).

Redeal

Inverter a pilha de descarte para que ela passe a ser a nova pilha de estoque. Alguns jogos permitem um único redeal enquanto outros permitem um número ilimitado de redeals.