Equipes formadas. Consultem no final da página!
O jodo Detetive-Assassino-Vítima
É um jogo comum na infância da maioria das crianças. A brincadeira consiste em formar um grupo de crianças para jogar, dispondo-as em círculo. Papéis são distribuídos, tendo-se o cuidado de haver o mesmo número de papéis e de integrantes. Todavia, em apenas um papel deve estar escrito ASSASSINO, e em apenas um outro deve estar DETETIVE. Nos restantes deve-se escrever VÍTIMA. O ASSASSINO tem a função de matar todos os integrantes do círculo com uma piscada, mas deve tomar cuidado para que o DETETIVE não o descubra, pois, se isso acontecer, o DETETIVE deve acusar o ASSASSINO. O papel das VÍTIMAS é só esperar a hora de serem mortas, e quando isso acontece elas devem dizer a todos: “Morri”. Se o ASSASSINO matar todos ou se o DETETIVE descobrir quem é o ASSASSINO a brincadeira acaba.
O projeto
A idéia é fazer a brincadeira de detetive-assassino-vítima usando um sistema distribuído. Basicamente haverão 4 processos distintos, que deverão funcionar em máquinas distintas, mas trocando mensagens entre si. A figura abaixo ilustra a arquitetura do sistema. Note que alguns métodos já estão especificados na figura e descritos logo abaixo. Você está OBRIGADO a implementa-los, sem fugir da arquitetura proposta. Podem haver mais métodos, mas nenhum dos métodos especificados abaixo pode deixar de ser implementado.
Há um servidor do jogo, a quem cabe a maior parte dos papéis. Quando o jogo se inicia, ele deve executar o método distributeRoles().
distributeRoles(): ler as informações dos jogadores de um arquivo (contendo o host da máquina de cada um dos jogadores), sortear o papel de cada um dos jogadores (apenas um assasino e apenas um detetive) e enviar, para cada uma das máquinas, o seu respectivo papel.
threaten(player): apenas o assassino pode executar, remotamente, este método. Registra quem é o jogador que está sendo, atualmente, ameaçado pelo assassino.
blink(): apenas o assassino pode executar, remotamente, este método. Verifica quem está sendo ameaçado atualmente (se não houver ninguém sob ameaça ainda o assassino não pode executar este método) e o mata, exceto se tratar-se do detetive. Neste caso o jogo é encerrado, com vitória do detetive. Caso o detetive não vença, então a vítima deve ser excluída do jogo, e caso o número de jogadores restantes seja menor ou igual a 3, o jogo é encerrado com vitória do assassino. Caso o assassino não vença, então é todos os jogadores devem ser informados da vítima que acabou de morrer.
suspect(player): apenas o detetive pode executar, remotamente, este método. Identifica que jogador está atualmente sob suspeita do detetive.
accuse(): apenas o detetive pode executar, remotamente, este método. Verifica quem está sendo o suspeito (se não houver nenhum suspeito identificado ainda, o o detetive não pode executar este método) e, se o suspeito é efetivamente o assassino e encerra o jogo indicando a todos que o vencedor é o detetive ou, caso contrário o assassino.
Os métodos, em pseudo-código, estão relatados abaixo.
distributeRoles()
playersList = readPlayers()
randomRules(playersList)
for each player P in playersList
r = playersList.role()
setRole(role) //sends for each player its role
suspect(player)
suspected = player
threaten(player)
threatened = player
accuse()
if suspected.role="killer"
endGame(detective)
else
endGame(killer)
blink()
if threatened.role = "detective"
endGame(detective)
else
playersList.remove(threatened)
if playersList.size <= 3
endGame(killer)
else
for each player P in playersList
isDead(player)//inform the player is dead
Equipes de no mínimo 1 e no máximo 2 pessoas.
Devem ser formadas espontaneamente até a meia-noite do dia 10/04/2015, por e-mail para degas at uesc dot br. Os que eventualmente não estejam em nenhuma equipe espontaneamente formada até esta data serão colocados em equipes formadas compulsoriamente.
Equipes
Equipes espontâneas
LENO MATOS LISBOA
PHILIPE SILVA FARIAS
DAVID LORRANCY DOS SANTOS SOUZA
FERNANDO PIRES DE MELO JUNIOR
TIAGO DA CONCEIÇÃO OLIVEIRA
ADRIANA NERY RAMOS
ROMARIO BARBOSA REIS
Equipes compulsórias
DANNIEL ARAUJO DE OLIVEIRA
HYAGO SANTANA OTTONI
JANAI MACIEL DA SILVA
LUCAS MANOEL MENDES SANTOS
LUIZA MIRANDA GUTERRES
MARCOS PAULO MALTA OLIVEIRA