Equipes de no mínimo UMA e no máximo QUATRO pessoas.
Equipes espontâneas: enviem email com os nomes dos componentes para degas at uesc dot br até a meia-noite do dia 02/11/2018 (dia de Finados!).
Equipes compulsórias: os nomes que não estiverem listado em alguma equipe espontânea serão colocados em equipes formadas compulsoriamente.
"Degas! Minha equipe me abandonou! O que eu faço?"
Se isto acontecer, foi por um dos dois motivos: ou você escolheu mal seus colegas de equipe, espontaneamente, ou então você não quis escolher seus colegas de equipe.
Em qualquer desses casos culpa é sua, não minha.
Deal with it.
O objetivo é coletar cartas, tentando aproximar a soma de seus valores do total de 21, mas sem ultrapassar este valor.
Para este jogo, as cartas 2, 3, 4, 5, 6, 7, 8, 9, e 10 valem exatamente seus respectivos valores. A carta A vale um, e as cartas J, Q e K valem 10 pontos cada uma.
Jogar blackjack em ambiente distribuído, em que os jogadores formam uma mesa virtual, compartilhando um croupier.
A mesa virtual é um anel em que cada player se conecta a um vizinho a partir de um arquivo de configuração.
Por exemplo: supondo que Ana, Beto, Carlos e Dulce estejam jogando. Os respectivos IPs sejam 192.168.0.212, 192.168.0.110, 192.168.0.124 e 192.168.0.201
Então um arquivo de configuração poderia ser assim.
192.168.0.212 Carlos
192.168.0.110 Dulce
192.168.0.124 Beto
192.168.0.201 Ana
Este arquivo indica que a "mesa" é formada por Carlos, depois Dulce depois Beto, depois Ana, e depois novamente Carlos.
Note que não há a necessidade de o jogo necessariamente começar por Carlos. Qualquer jogador pode iniciar um jogo. Mas é imperativo que os arquivos de configuração sejam idênticos entre todos os jogadores.
Há um "croupier" que navega entre os usuários. Este croupier é um objeto, que é passado como um token, dando a cada um a "vez" de jogar.
Quando recebe o croupier, isto habilita, para cada usuário, uma interface em que ele pode decidir se ainda deseja mais cartas, ou se já encerrou o jogo, e passar a vez para o jogador seguinte, de acordo com o arquivo de configuração.
O usuário pode, também, iniciar um novo jogo.
O usuário terá uma interface que será habilitada quando for sua vez de jogar (ou seja, quando ele estiver de posse do token "croupier")
(0) - Novo jogo (precisa de confirmação)
(1) - Carta
(2) - Sem mais cartas
(3) - Proximo
Se o jogador escolhe <Novo Jogo>, então o objeto croupier é reinicializado, e um novo jogo começa utilizando-se o arquivo de configuração
deste jogador.
Se o jogador escolhe <Carta>, então ele recebe a informação de qual carta ele recebeu, e se ele ainda está no jogo (seu status). Caso ele não esteja mais no jogo, esta informação também é mostrada. A interface é apresentada mais uma vez.
Se o jogador escolhe <Sem mais cartas>, então doravante ele não poderá mais pedir cartas e seu status é considerado finished. A interface é apresentada mais uma vez.
Se o jogador escolhe <Proximo>, então ó objeto croupier é enviado para o próximo jogador na lista, de acordo com seu arquivo de configuração.
O objeto, croupier, em pseudo código, bem como seus componentes internos. estão descritos abaixo.
----------------croupier-------------------------
playersList
deck of cards
showGameStatus() {
//mostra o status do jogo: se ainda há jogadores participando ou //se já há um vencedor, e quem é
}
getCard(playerID) {
player = findPlayer(playerID)
if (!player.isFinish()) {
if (!deck.empty()) {
player.newCard(deck.pop())
showPlayer(player)
}
}
if (allFinished()) {
showResults()
}
}
finish(playerID) {
player = findPlayer(playerID)
player.setFinished(true)
}
findPlayer(playerID) {
//finds a player p where p.id = playerID
return p
}
allFinished() {
return if all players are finished
}
showPlayer(player) {
//mostra a quantidade de pontos que o jogador já acumulou e seu //status (finished)
}
croupier() { //constructor
//initialize playersList as set in the configuration file
//initialize deck (the deck of cards)
// all cards from A to K
// all suits: clubs, diamonds, hearts and spades
// those 52 cards are randomized into a stack
}
-------------------player-------------------------
isFinish() {
return finished
}
newCard(card) {
points += card.value()
if (points > 21)
finished = true
}
------------------deck-----------------------------
all 52 cards must be into a stack
initialize() {
//shuffle the stack
}
card pop() {
//pops the stack
}
boolean empty() {
returns if the stack is empty
}
EQUIPES ESPONTÂNEAS
ADSON SANTOS CARDOSO
ALEXANDRE PEDRECAL CAMPOS
GABRIEL RODRIGUES DOS SANTOS
EGLOM SOSTENES PEREIRA DA SILVA
LEVY MARLON SOUZA SANTIAGO
TULIO CAMPOS SILVA
FELIPE OLIVEIRA CARDOSO
MARCOS ROGERIO PINHEIRO SOUSA
NYGUEL VINICIUS SALES DE MENEZES
EQUIPES COMPULSÓRIAS
ADRIANO DE JESUS PASSOS
BRANDON ANTUNES NERI RIBEIRO
FANUEL OLIVEIRA SANTOS
KAIQUE SILVA PEDROSO