Descrição
Nessa atividade de laboratório você deve implementar em
Java um jogo distribuído: o jogo de palitinhos.
Cada
jogador começa com três palitos. Os jogadores colocam as mãos para trás, e
cada jogador coloca na mão direita uma certa quantidade de palitos (zero, um,
dois ou três) sem que os outros jogadores saibam. A mão direita fechada vai
pra frente e os palitos nessa mão de cada jogador são os palitos que estão
“no jogo”.
A
seguir, um dos jogadores dá um palpite sobre a soma total dos “palitos
no jogo”. O próximo a dar o palpite será o jogador à esquerda do
primeiro (sentido horário), e assim sucessivamente. Não pode haver palpite
repetido. Quando todos os jogadores tiverem dado o seu palpite, as mãos se
abrem, faz-se a soma dos palitos para ver se algum jogador acertou. Caso
haja, esse jogador descarta um palito, passando a jogar com um palito a
menos.
Na
próxima rodada, o jogador que deu o palpite primeiro na rodada anterior passa
a ser o último,e o primeiro agora será aquele que estiver à sua esquerda.
Ganha o jogo o jogador que acertar três vezes, ou seja, o primeiro que ficar
sem palitos. Esse jogador sai e os outros continuam jogando. O grande
perdedor (p. ex. aquele que vai pagar a conta do bar) será aquele que ficar
sozinho no jogo.
A única
restrição do jogo é que na primeira rodada a mão não pode vir sem palito (somente
na primeira rodada). Não existe um número máximo de jogadores para esse jogo,
mas o ideal é ter de 4 a 6 jogadores.
Implementação
Cada
jogador deve ser representado por um processo diferente.
A
comunicação entre jogadores deve ser efetuada utilizando um dos seguintes
mecanismos para comunicação entre processos:
· Sockets UDP, TCP ou Multicast;
· Java RMI;
· CORBA.
Há
duas estratégias de implementação que podem ser adotadas:
· Estratégia centralizada: utiliza
um processo coordenador, que faz o papel de “juiz” do jogo. O
coordenador sabe quantos palitos cada objeto jogador tem, quantos palitos
cada um está colocando em cada rodada, faz a soma, diz se há um acertador, e
avisa ao acertador para que este descarte um palito.
· Estratégia distribuída: não existe
um elemento central que compute o resultado das jogadas. Cada jogador deve
ser informado pelos demais jogadores quantos palitos cada um deles possui na
mão, e deve computar o resultado de cada jogada.
Analise
cuidadosamente o problema e defina a estratégia e o mecanismo de comunicação que
serão adotados antes de iniciar a implementação.
Apresentação
A atividade deve ser
desenvolvida em duplas. O programa deve ser apresentado ao professor
no laboratório até o dia 20/11. Os dois componentes do grupo devem estar
presentes. Será verificado o funcionamento do programa e em seguida os alunos
devem responder a questões sobre a forma como foram utilizados os mecanismos de comunicação entre
processos no programa.
Podem ser atribuídas
notas diferentes aos alunos de um grupo, dependendo das respostas às
perguntas sobre o código do programa efetuadas pelo professor. Caso um dos
alunos não esteja presente ou demonstre não conhecer o código do programa,
será atribuída nota zero à atividade. Em caso de cópia do código de
outro grupo, ambos terão nota igual a zero.
Dúvidas
f r a n k @ i n f . u f s
c . b r
l a u . l u n g @ i n f .
u f s c . b r
Mantida por Frank Siqueira. Atualizada em
3/11/2007.
|