Erich D. Lunardeli Silvestre <[email protected]>
 Visão geral
 Serviços
 Interfaces
 Detalhes
 Avaliação
Cliente do
Jogador 1
Cliente do
Jogador 2
SOAP
SOAP
SOAP
Cliente do
Jogador N
Serviço de
Bingo
SOAP
Serviço
“Confiável” de
Geração de
Números
Aleatórios
 Responsabilidades:





Criar instâncias de bingo;
Listar bingos;
Gerar e distribuir cartelas;
Verificar ganhadores;
Armazenar e fornecer o estado de cada bingo.
 Responsabilidades:
 Gerar números pseudo-aleatórios em faixas
determinadas;
 NÃO armazenar estado.
 PartidaDeBingo criar(Bingo bingo, int númeroDeJogadores) ;
 Parâmetros:
 bingo = bingo a ser realizado pelo serviço
 númeroDeJogadores = número de jogadores a esperar antes de iniciar os sorteios
do bingo
 Retorno: partida criada, ela já deve possuir um número atribuído
 PartidaDeBingo obterPartida (int númeroDaPartida)
 Este método deve ser utilizado para a obtenção do estado da partida
 Parâmetro:
 númeroDaPartida = número da partida a obter
 Retorno: partida de bingo
 PartidaDeBingo[] listarPartidas();
 Retorna a lista de partidas que ainda não foram iniciadas
 PartidaDeBingo entrar (String nome, int númeroDaPartida)
 Parâmetros:
 nome = nome pelo qual o jogador será reconhecido
 númeroDaPartida = numero da partida a entrar
 Retorno:
 Partida de bingo, ela deve conter todos os dados de estado
preenchidos
 Obs: é bloqueante, só retorna quando o último jogador entrar
ou um timeout acontecer.
 void sair (String nome, int númeroDaPartida)
 Parâmetros:
 nome = nome do jogador
 númeroDaPartida = numero da partida a deixar
 int[] gerarAleatorios(int menor, int maior,
int[]excluídos, int quantidade)
 Parâmetros:
 menor = menor número a gerar
 maior = maior número a gerar
 excluídos = números que não devem ser “gerados”
 quantidade = números a gerar
 Retorno:
 Uma lista de números pseudo-aleatórios contidos no
intervalo [menor, maior] e que não estejam na lista de
excluídos. NÃO pode haver números repetidos.
Classe Bingo
 Atributos:
 String nomeDoCriador
 nome do criador do bingo, ex: Joãozinho.
 String nomeDoBingo
 Nome do bingo, ex: Bingo da Igreja X
 String[] prêmios (opcional Premio[])
 Lista dos prêmios oferecidos no bingo
 Um par de métodos get/set para cada atributo
Classe Premio (opcional)
 Atributos:
 String nome = nome do prêmio
 String urlDaImagemDoPrêmio = url da imagem do prêmio
 Um par de métodos get/set para cada atributo
Classe PartidaDeBingo
 Atributos:
 Int número
 Número de identificação da partida, deve ser único
 String estado
 Estado atual do bingo, valores possíveis: [“Não iniciado”, “Iniciado”, “Finalizado” ]
 int Rodada
 Número da rodada atual
 Cartela[] cartelas
 As cartelas de todos jogadores que participam da partida
 String[] ganhadores
 Lista dos ganhadores de cada rodada em ordem crescente
 int[] númerosSorteados
 Lista de números já sorteados na rodada atual
 String observações
 Reservado para mensagens. Por exemplo: Falta uma dezena para jogador X ganhar o
prêmio Y.
 Um par de métodos get/set para cada atributo
Classe Cartela
 Atributo:
 int[] dezenas
 Dezenas da cartela
 String nomeDoJogador
 Nome do dono da cartela
 Um par de métodos get/set para cada atributo
 Alguns métodos a cargo do desenvolvedor,
 ex: marcarDezena(int dezena).
 Uma interface gráfica deve ser implementada e permitir ao
usuário:




A criação de uma nova partida de bingo
Listagem das partidas ainda não iniciadas
Entrar em uma partida que esteja listada
Quando em um bingo:
 Listagem dos atributos (nome, premios (se tiver URL mostrar
imagem), etc..)
 Estado atual (atributos da classe partida)
 Cartela do jogador e as marcações (opcional: cartela dos demais
jogadores)
 A atualização da interface gráfica com o Serviço de Bingo
será feita pelo serviço obterPartida()
 O número de dezenas de cada cartela é livre, assim como a
faixa de números sorteados :
 Sugestão: 20 e [1,50]
 Toda geração aleatória de números deve ser feita pelo
Serviço de Geração de Números Aleatórios
 Uma rodada é encerrada quando um jogador completa sua
cartela
 Ao fim de cada rodada:
 Um prêmio é atribuído ao vencedor
 As marcações das cartelas são zeradas
 Cada sorteio de dezena deve levar no máximo 5 segundos
 Implementação:
 Alguma linguagem que suporte WS: C++, Java, Python
 Sugestão: Java + Axis + Apache Tomcat
 O importante é que tanto a interface gráfica, quanto
clientes e serviços funcionem
Apresentação
 Enviar código do projeto pelo menos 1 dia antes via email
 Marcar horário via e-mail
 [email protected]
Download

(DAS 5315) Projeto de Serviços Web 2010/1