private void executaJogada() throws FileNotFoundException, IOException, ClassNotFoundException {
        
        String move = leitor.nextLine();
        if (move.compareToIgnoreCase("save") == 0)
        {
            FileOutputStream fos = new FileOutputStream("default.xdz");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(new Checkpoint(this.pecas, brancas));
            oos.close();
            mensagem = "Jogo Salvo! Digite \'load\' para carregar";
        }
        else if (move.compareToIgnoreCase("load") == 0)
        {
            try 
            {
            FileInputStream fis = new FileInputStream("default.xdz");
            ObjectInputStream ois = new ObjectInputStream(fis);
            Checkpoint checkpoint = (Checkpoint)ois.readObject();
            ArrayList<Peca> pecasSalvas = checkpoint.getPecas();
            brancas = checkpoint.isBrancas();
            ois.close();
            this.tabuleiro = new Tabuleiro(pecasSalvas);
            this.pecas = pecasSalvas;
            mensagem = "Jogo recarregado";
            }
            catch (Exception e)
            {
                mensagem = "Arquivo não existe.";
            }
        }
        else if (move.compareToIgnoreCase("undo") == 0 && jogadas.size() > 0 && !this.lastWasUndo)
        {
            int index = jogadas.size() - 1;
            tabuleiro.desfazerJogada(jogadas.get(index));
            jogadas.remove(index);
            brancas = !brancas;
            mensagem = "Jogada desfeita.";
            this.lastWasUndo = true;
        }
        else if (parseMovimentoString(move, false) != null)
        {
            Posicao[] movimento = parseMovimentoString(move, false);
            Peca pecaMovida = tabuleiro.getCasa(movimento[0]);
            Peca pecaCapturada = tabuleiro.getCasa(movimento[1]);
            Movimento movMsg = tabuleiro.mover(movimento[0], movimento[1], brancas);
            if (movMsg.getValidado())
            {
                Jogada jogada = new Jogada(pecaMovida, pecaCapturada, movimento[0], movimento[1]);
                jogadas.add(jogada);
                this.lastWasUndo = false;
            }
            brancas = movMsg.getValidado() ? !brancas : brancas;
            mensagem = movMsg.getMensagem();
            this.finalizado = movMsg.fim;
        }
        else
        {
            mensagem = "Movimento invalido, exemplo correto: b1b5";
        }
        
    }