# Introdução às Redes de Computadores/Jogo de Jo-Ken-Po

Titulo: Jogo de Jo-Ken-Po
Descrição: Protocolo que gerenciará um jogo online de pedra, papel e tesoura entre duas pessoas.
Arquitetura: cliente/servidor
Funcionalidades: Poderão se conectar dois jogadores humanos ao servidor, para jogarem um contra o outro. O jogador também terá a opção de jogar contra o computador.
Referencial teórico:
www.dcc.unesc.net/sulcomp/06/artigos/Workshop/21881.pdf
Kurose, James F. E Ross, Keith W.; Redes de Computadores e a Internet; 3ª Edição, Editora Pearson.
Protocolo Jogo de Jo-Ken-Po
1. RFC do Protocolo Jogo de Jo-Ken-Po
1.1. Introdução (Resumo)
O protocolo Jogo de Jo-Ken-Po é um protocolo da camada de aplicação que visa gerenciar um jogo online entre dois jogadores humanos, ou entre um jogador humano e o computador. Ele recebeu este nome porque o jogo que estará sendo usado para implementá-lo é um jogo de Jo-Ken-Po (pedra, papel e tesoura), mas com as devidas modificações, ele pode gerenciar outros tipos de jogos que envolvam dois jogadores. O protocolo é orientado à conexão, e exige o serviço de entrega confiável de dados. Portanto, será considerado o uso de TCP na camada de transporte para implementação do protocolo.
1.2. Definições
Sintaxe:
O protocolo será implementado sobre o protocolo TCP pois este oferece os serviços que o protocolo requer. Neste protocolo, após o estabelecimento da conexão entre o cliente e o servidor, haverá duas possibilidades de escolha para o cliente: iniciar um jogo contra o computador, ou um iniciar jogo contra um humano.
Nessa modalidade, primeiramente o servidor deverá enviar ao cliente uma mensagem contendo as opções de jogadas (pedra, papel e tesoura), e esperar pela resposta do cliente. O cliente escolherá uma jogada, e enviará sua resposta para o servidor. O servidor irá gerar uma jogada aleatória, e decidirá se o jogo foi vencido pelo cliente ou pelo servidor. O servidor então enviará ao cliente o resultado do jogo. Após o fim do jogo, o servidor irá perguntar se o jogador quer realizar um novo jogo contra o computador. Em caso positivo, um novo jogo será iniciado contra o servidor. Em caso negativo, o cliente será encaminhado para a tela inicial do jogo.
Nessa modalidade, o servidor dá ao cliente uma lista com jogadores para que ele possa escolher contra quem ele quer jogar, ou então, o cliente pode esperar pelo convite de algum adversário. No primeiro caso, o servidor enviará ao cliente uma lista com jogadores para que ele possa escolher contra quem ele quer jogar. O cliente então retornará uma resposta para o servidor, contendo o jogador contra o qual ele quer jogar. O servidor enviará uma mensagem perguntando ao jogador escolhido se ele quer jogar contra o desafiante. Se for positiva a resposta, então o jogo começará. Se for negativa, o cliente desafiante voltará à lista para escolher um outro cliente contra o qual ele quer jogar.
Se ambos os jogadores concordarem em jogar, o jogo se iniciará. O servidor enviará para os dois jogadores uma mensagem com as possibilidades de jogadas que eles possuem, e ficará esperando pela resposta de ambos. Assim que ambos responderem, o servidor verificará qual o resultado do jogo e enviará uma resposta para ambos os jogadores. Os jogadores podem decidir jogar novamente ou escolher outro oponente. Se houver um jogador que queira jogar contra outro oponente, ambos irão para a tela de seleção de oponentes.
1.3. Mensagens
Campos
“Número do Jogo” serve para identificar os jogos relacionado com seus jogadores pelo Ip, pois podem estar acontecendo vários jogos ao mesmo tempo.
A:
B:
D:
F:
H:
Os campos I, J, K, L, M, O e P não são utilizados e podem ser usados para necessidades futuras.
No “Ip do Oponente”, 999.999.999.999 indica jogo contra computador.
1.4. Bugs
Até a data de publicação desta RFC não foi constatada a existência de bugs.
1.5. Melhorias Futuras
Pode-se gerenciar partidas com mais que dois jogadores humanos expandindo as possibilidades de jogos que poderiam ser implementados utilizando esse protocolo.
2. Fluxo de mensagens do protocolo Jo-Ken-Po
3. FSM's do Protocolo Jogo de Jo-Ken-Po
Abaixo, estão as FSM's tanto do cliente, quanto do servidor do protocolo Jogo de Jo-Ken-Po. O estado inicial da Máquina de Estado finito está marcado com dois asteriscos(**)