package com.matheusjardimb; import java.rmi.Remote; import java.rmi.RemoteException; import com.matheusjardimb.exception.InvalidPlayerNameException; import com.matheusjardimb.exception.PlayerLimitReachedException; public interface GameInterface extends Remote { /** * 1) registraJogador Recebe: string com o nome do usuário/jogador Retorna: * id (valor inteiro) do usuário (que corresponde a um número de * identificação único para este usuário durante uma partida), -1 se este * usuário já está cadastrado ou -2 se o número máximo de jogadores tiver * sido atingido * * @throws RemoteException * @throws InvalidPlayerNameException * @throws PlayerLimitReachedException */ public Integer registraJogador(String name) throws RemoteException, InvalidPlayerNameException, PlayerLimitReachedException; /** * 2) temPartida Recebe: id do usuário (obtido através da chamada * registraJogador) Retorna: -2 (tempo de espera esgotado), -1 (erro), 0 * (ainda não há partida), 1 (sim, há partida e o jogador inicia jogando com * “X”) ou 2 (sim, há partida e o jogador é o segundo a jogar, usando “O”) */ public Integer temPartida(Integer id) throws RemoteException; /** * 3) ehMinhaVez Recebe: id do usuário (obtido através da chamada * registraJogador) Retorna: -1 (erro), 0 (não), 1 (sim), 2 (é o vencedor), * 3 (é o perdedor), 4 (houve empate), 5 (vencedor por WO), 6 (perdedor por * WO) Observação: se ainda não houver 2 jogadores registrados na partida, * esta chamada retorna o código de erro */ public Integer ehMinhaVez(Integer id) throws RemoteException; /** * 4) obtemGrade Recebe: id do usuário (obtido através da chamada * registraJogador) Retorna: string vazio em caso de erro ou string com a * grade de jogo */ public String obtemGrade(Integer id) throws RemoteException; /** * 5) enviaJogada Recebe: id do usuário (obtido através da chamada * registraJogador) e jogada (valor inteiro de 0 a 8, correspondendo à * posição da jogada na grade) Retorna: 2 (partida encerrada, o que ocorrerá * caso o jogador demore muito para enviar a sua jogada e ocorra o time-out * de 30 segundos para envio de jogadas), 1 (tudo certo), 0 (posição * ocupada) ou -1 (erro) */ public Integer enviaJogada(Integer id, Integer jogada) throws RemoteException; /** * 6) obtemOponente Recebe: id do usuário (obtido através da chamada * registraJogador) Retorna: string vazio para erro ou string com o nome do * oponent */ public String obtemOponente(Integer id) throws RemoteException; }