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:
Mover todas as cartas para as fundações.
Pilha de decarte (ao lado do estoque) - a carta no topo está disponível para jogar nas fundações ou tableau.
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.
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.
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.
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.
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".
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.
Jogue uma carta de um valor acima e do mesmo naipe da carta alvo. Por exemplo, jogue um
5 de num 4 de
.
Jogue uma carta de um valor abaixo e do mesmo naipe da carta alvo. Por exemplo, jogue
um 8 de num 9
de
.
Jogue uma carta de um valor acima da carta alvo e de qualquer naipe. Por exemplo, jogue
um 9 de num 8 de
.
Jogue uma carta de um valor abaixo da carta alvo e de qualquer naipe. Por exemplo,
jogue um 9 de num
10 de
.
Jogue uma carta de um valor acima da carta alvo e trocando a cor da carta. Por exemplo,
jogue um 9 de num
8 de
.
Jogue uma carta de um valor acima da carta alvo e trocando a cor da carta. Por exemplo,
jogue um 7 de num
8 de
.
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.