INE5645
Laboratório 5 - Comunicação entre Processos

Prof. Frank Siqueira - Turma A
Prof. Lau Cheuk Lung
- Turma B

Departamento de Informática e Estatística
Universidade Federal de Santa Catarina
 

INE5645 | Descrição | Implementação | Apresentação | Dúvidas


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.