示例#1
0
  private int verificarVencedor(Partida partida, Jogador jogador) {
    Jogador oponente =
        this.jogadores.get(
            partida
                .getJogadores()
                .stream()
                .filter(j -> !j.equals(jogador.getIdJogador()))
                .collect(Collectors.toList())
                .get(0));
    Tabuleiro tabuleiro = partida.getTabuleiro();
    boolean vencedor;

    vencedor = verificarVertical(tabuleiro, jogador.getOrdemJogada());
    if (!vencedor) vencedor = verificarHorizontal(tabuleiro, jogador.getOrdemJogada());
    if (!vencedor) vencedor = verificarDiagonal(tabuleiro, jogador.getOrdemJogada());

    if (oponente.getStatus() == 2 && vencedor) { // 4 -> houve empate
      jogador.setStatus(4);
      oponente.setStatus(4);
      return 4;
    }
    if (oponente.getStatus() == 2) { // 3 -> é o perdedor
      jogador.setStatus(3);
      return 3;
    }
    if (vencedor) { // 2 -> é o vencedor
      jogador.setStatus(2);
      oponente.setStatus(3);
      return 2;
    }
    if (oponente.getStatus() == 5) { // 6 -> perdedor por WO
      jogador.setStatus(6);
      return 6;
    }
    if (tabuleiroCheio(tabuleiro)) { // 4 -> houve empate
      jogador.setStatus(4);
      oponente.setStatus(4);
      return 4;
    }

    return -1;
  }
示例#2
0
  @Override
  public synchronized int ehMinhaVez(Integer idJogador) throws RemoteException {
    Partida partida = getMinhaPartida(idJogador);
    Jogador jogador = jogadores.get(idJogador);
    Integer vencedor = 0;

    if (partida == null && jogador == null) return -1;

    if (partida == null) return jogador.getStatus();

    if (partida.getJogadores().size() > 1) vencedor = verificarVencedor(partida, jogador);

    if (vencedor > 0) return vencedor;

    if (partida.getJogadorDaVez().equals(jogador.getOrdemJogada())) return 1;
    else return 0;
  }