Example #1
0
  public void iniciarPrograma(String escolha)
      throws ClassNotFoundException, PartidaEncerradaException {

    switch (escolha) {
      case "1":
        try {

          this.jogos = persintencia.load();
          if (jogos == null) {
            jogos = new Jogos();
          }
          partida = new Partida();
          partida.iniciaPartida();
          this.iniciarPartida(partida);
        } catch (PartidaEncerradaException ex) {
        }
        break;

      case "2":
        this.jogos = (Jogos) persintencia.load();
        if (jogos != null) {
          int numeroPartidas =
              jogos.getListPartidasNaoFinalizadas().size(); // numero de partidas nao finalizadas
          if (numeroPartidas > 0) {
            impressora.imprimirPartidas(jogos.getListPartidasNaoFinalizadas());
            impressora.imprimirEscolhaPartida();
            String opcao = impressora.getString(); // escolhe a partida
            if (opcao.matches(
                "[0 -" + (numeroPartidas - 1) + "]")) { // verifica se a escolha é verdadeira
              partida =
                  jogos
                      .getListPartidasNaoFinalizadas()
                      .get(Integer.parseInt(opcao.trim())); // pega a partida escolhida
              jogos.getListPartidasNaoFinalizadas().remove(Integer.parseInt(opcao.trim()));
              partida.recomeçarPartida(); // coloca false na variavel que indica se o usuario ja
              // salvou, para poder sair
              this.jogadas(partida);
            } else { // se a escolha nao for verdadeira
              impressora.imprimirArgumentoInvalido();
              return;
            }
          } else {
            impressora.imprimirSemPartidas();
            return;
          }
        } else { // se nao existir partidas
          impressora.imprimirSemPartidas();
          return;
        }
        break;

      case "3":
        jogos = persintencia.load();
        if (jogos != null) {
          impressora.imprimirDados(jogos);
        } else {
          impressora.imprimirSemDados();
        }
        break;
    }
  }
Example #2
0
  /**
   * Inicia a jogada de um player humano.
   *
   * @param jogadorAtual O jogador a efetuar a o jogada
   * @param jogadorProx O jogador que jogara na proxima jogada, necessario para desistencia
   * @throws JogadaInvalidaException É lançada quando a jogada não é bem sucedida.
   * @throws br.edu.ifes.poo1.xadrez.cci.PartidaEncerradaException Quando a partida é encerrada.
   */
  public void iniciarJogada(JogadorHumano jogadorAtual, Jogador jogadorProx)
      throws JogadaInvalidaException, PartidaEncerradaException, ClassNotFoundException {
    impressora.pedirMovimento(jogadorAtual.getNome());
    String jogadaStr = impressora.getString();

    // Valida o comando dado pelo jogador.
    while (!this.validarEntrada(jogadaStr)) {
      impressora.imprimirArgumentoInvalido();
      impressora.pedirMovimento(jogadorAtual.getNome());
      jogadaStr = impressora.getString();
    }

    // Verifica se é desistência, empate ou se ele solicita ver os pontos.
    if (jogadaStr.matches("\\D+") && (!jogadaStr.equals("O-O-O") || !jogadaStr.equals("O-O"))) {
      switch (jogadaStr) {
        case "desistir":
          if (!jogadorProx.getNome().equals("ZEUS")) {
            jogadorProx.setVitoria(true);
          }
          jogos.setListDadosJogos(jogadorAtual, jogos.getListDadoJogo());
          jogos.setListDadosJogos(jogadorProx, jogos.getListDadoJogo());
          partida.encerrarPartida(jogadorProx.getNome());
          this.jogos.getListPartidasFinalizadas().add(partida);
          this.persintencia.save(this.jogos);
          impressora.imprimirJogoSalvo();
          impressora.imprimiFimJogo();
          return;
        case "empate":
          String escolha = "";
          while (!escolha.equals("S") && !escolha.equals("N")) {
            impressora.imprimiPedidoEmpate();
            Scanner scanner = new Scanner(System.in);
            escolha = scanner.nextLine();
            switch (escolha) {
              case ("S"):
                impressora.imprimiEmpate();
                partida.encerrarPartida("Empate");
                this.jogos.getListPartidasFinalizadas().add(partida);
                this.persintencia.save(this.jogos);
                impressora.imprimirJogoSalvo();
                impressora.imprimiFimJogo();

                return;
              case ("N"):
                iniciarJogada(jogadorAtual, jogadorProx);
                return;
            }
          }
        case "pontos":
          impressora.imprimirPontos(jogadorAtual);
          iniciarJogada(jogadorAtual, jogadorProx);
          return;

        case "salvar":
          jogadorAtual.setSave(true);
          this.jogos.getListPartidasNaoFinalizadas().add(partida);
          this.persintencia.save(this.jogos);
          impressora.imprimirJogoSalvo();
          iniciarJogada(jogadorAtual, jogadorProx);
          return;

        case "sair":
          if (jogadorAtual.getSave()) {
            partida.setPartidaInterrompida(true);

            impressora.imprimiFimJogo();
            return;
          } else {
            impressora.imprimiErroSaida();
            iniciarJogada(jogadorAtual, jogadorProx);
            return;
          }
      }
    }

    ((JogadorHumano) jogadorAtual).setJogada(criaJogada(jogadaStr));

    this.apl.fazerJogada(jogadorAtual, partida);

    if (jogadorAtual.isVitoria()) {
      jogos.setListDadosJogos(jogadorAtual, jogos.getListDadoJogo());
      jogos.setListDadosJogos(jogadorProx, jogos.getListDadoJogo());
      partida.encerrarPartida(jogadorAtual.getNome());
      this.jogos.getListPartidasFinalizadas().add(partida);
      this.persintencia.save(this.jogos);
      impressora.imprimirJogoSalvo();
      impressora.imprimiFimJogo();
      return;
    }
  }