Projeto da disciplina de Programação e Desenvolvimento de Software 2 do curso de Sistemas de Informação da UFMG.
Jogo de Poker Texas Hold'em desenvolvido em C++
-
Como jogador eu quero aumentar a aposta para aumentar o valor do pote e ganhar mais (raise)
-
Critérios de aceitação:
- O jogador deve estar participando da jogada
- O valor do pote deve ser acrescido
- O jogador deve ter o valor para aumentar a aposta
- O valor deve ser descontado do valor das fichas do jogador
-
Como jogador eu quero seguir o jogo para continuar na rodada e manter o valor do pote (check)
-
Critérios de aceitação:
- O jogador deve estar participando da jogada
- O valor da aposta não deve ter sido alterado na rodada
- O jogador deve se manter no jogo
- As fichas do jogador devem ser mantidas
-
Como jogador eu quero aceitar a aposta para continuar na rodada e aumentar o valor do pote (call)
-
Critérios de aceitação:
- O jogador deve estar participando da jogada
- O valor da aposta deve ter sido alterado na rodada
- O jogador deve se manter no jogo
- O valor deve ser descontado do valor das fichas do jogador
-
Como jogador eu quero desistir da jogada para sair da mesa (fold)
-
Critérios de aceitação:
- O jogador deve estar participando da jogada
- O jogador deve ser retirado da mesa
- Se for o pré-flop, as fichas não são descontadas
- O valor deve ser descontado do valor das fichas do jogador se tiver passado do flop
-
Como jogador eu quero iniciar o jogo para poder jogar
-
Critérios de aceitação:
- O jogador deve informar o número de bots a jogar contra
- O jogador deve ser inserido no jogo
- Os bots devem ser inseridos no jogo
- O jogador deve receber 2 cartas
- Os bots devem receber 2 cartas
- O jogador deve receber um valor inicial em fichas
- Os bots devem receber um valor inicial em fichas
-
Como jogador eu quero finalizar o jogo para poder sair do jogo
-
Critérios de aceitação:
- O jogador deve estar jogando anteriormente
- O jogador deve confirmar que deseja sair
- O jogo deve ser encerrado
-
Como jogador eu quero saber o que tenho na mão para poder tomar decisões na jogada
-
Critérios de aceitação:
- O jogador deve estar participando da jogada
- O sistema deve informar a sequência que o jogador tem na mão
- O sistema deve informar a hierarquia das sequências e onde a mão do jogador se encontra nessa hierarquia
| Classe | Dealer |
|---|---|
| Responsabilidades | Colaborações |
| Atributos: | Baralho |
| Momento do jogo | Mesa |
| Número de jogadores | Pote |
| "" | EtapaJogo |
| Métodos: | |
| Iniciar partida | |
| Distribuir fichas | |
| Incluir jogadores | |
| Iniciar pré-flop | |
| Iniciar flop | |
| Iniciar turn | |
| Iniciar river | |
| Mostrar mão atual do jogador | |
| Verificar resultado da partida | |
| Entregar prêmio |
| Classe | EstadoJogo |
|---|---|
| Responsabilidades | Colaborações |
| Atributos: | Baralho |
| Momento do jogo | Jogador |
| Número de jogadores | Mão |
| Mesa | |
| Métodos: | Pote |
| Validar Apostas | |
| Distribuir Cartas | |
| Verificar Opções de Ação Do Jogador |
| Classe | PreFlop |
|---|---|
| Responsabilidades | Colaborações |
| Atributos: | Baralho |
| Momento do jogo | Jogador |
| Número de jogadores | Mão |
| Mesa | |
| Métodos: | Pote |
| Validar Apostas | Bot |
| Distribuir Cartas | EtapaJogo (Herança por polimorfismo) |
| Verificar Opções de Ação Do Jogador |
| Classe | Flop |
|---|---|
| Responsabilidades | Colaborações |
| Atributos: | Baralho |
| Momento do jogo | Jogador |
| Número de jogadores | Mão |
| Mesa | |
| Métodos: | Pote |
| Validar Apostas | Bot |
| Distribuir Cartas | EtapaJogo (Herança por polimorfismo) |
| Verificar Opções de Ação Do Jogador |
| Classe | Turn |
|---|---|
| Responsabilidades | Colaborações |
| Atributos: | Baralho |
| Momento do jogo | Jogador |
| Número de jogadores | Mão |
| Mesa | |
| Métodos: | Pote |
| Validar Apostas | Bot |
| Distribuir Cartas | EtapaJogo (Herança por polimorfismo) |
| Verificar Opções de Ação Do Jogador |
| Classe | River |
|---|---|
| Responsabilidades | Colaborações |
| Atributos: | Baralho |
| Momento do jogo | Jogador |
| Número de jogadores | Mão |
| Mesa | |
| Métodos: | Pote |
| Validar Apostas | Bot |
| Distribuir Cartas | EtapaJogo (Herança por polimorfismo) |
| Verificar Opções de Ação Do Jogador |
| Classe | Carta |
|---|---|
| Responsabilidades | Colaborações |
| Atributos: | Naipe |
| Naipe | Símbolo |
| Símbolo |
| Classe | Baralho |
|---|---|
| Responsabilidades | Colaborações |
| Atributos: | Cartas |
| Cartas | |
| Métodos: | |
| Embaralhar | |
| Distribuir cartas |
| Classe | Mesa |
|---|---|
| Responsabilidades | Colaborações |
| Atributos: | Pote |
| Cartas | Carta |
| Pote | Baralho |
| Métodos: | |
| Adicionar cartas à mesa |
| Classe | Pote |
|---|---|
| Responsabilidades | Colaborações |
| Atributos: | Jogador |
| Valor total | Mesa |
| Valor aposta atual | |
| Valor aposta anterior | |
| Métodos: | |
| Alterar valor aposta atual | |
| Substituir aposta anterior | |
| Alterar valor total |
| Classe | Jogador |
|---|---|
| Responsabilidades | Colaborações |
| Atributos: | Mão |
| Mão | Pote |
| Fichas | Baralho |
| Métodos: | OrdemSequencia |
| Pagar a aposta | EstadoJogo |
| Aumentar a aposta | |
| Desistir da partida | |
| Passar a vez | |
| Analisar mão |
| Classe | Jogador |
|---|---|
| Responsabilidades | Colaborações |
| Atributos: | Mão |
| Mão | Pote |
| Fichas | Baralho |
| Métodos: | OrdemSequencia |
| Pagar a aposta | EtapaJogo |
| Aumentar a aposta | Jogador (Herança) |
| Desistir da partida | |
| Passar a vez | |
| Analisar mão |
| Classe | JogadorHumano |
|---|---|
| Responsabilidades | Colaborações |
| Atributos: | Jogador(Herança) |
| Mão | Mão |
| Fichas | Pote |
| Baralho | |
| Métodos: | OrdemSequencia |
| Pagar a aposta | EtapaJogo |
| Começar Partida | |
| Finalizar Jogo | |
| Pagar a aposta | |
| Aumentar a aposta |
| Classe | Mão |
|---|---|
| Responsabilidades | Colaborações |
| Atributos: | Cartas |
| Cartas (Coleção de cartas) | Jogador |
| "" | Naipe |
| "" | Símbolo |
Ouros = 1; Paus = 2; Copas = 3; Espadas = 4;
1; 2; 3; 4; 5; 6; 7; 8; 9; 10; J; Q; K; A;
HighCard = 1; Pair = 2; TwoPair = 3; ThreeOfAKind = 4; Straight = 5; Flush = 6; FullHouse = 7; FourOfAKind = 8; StraightFlush = 9; RoyalFlush = 10;