Jogo da Velha em Java - Humano vs. Computador

Oi, tudo bem? Bom, gente, eu sou bem novato em programação. Estou tentando criar um jogo da velha com interface gráfica, e até agora o código compilou direitinho. O problema é: eu só consigo fazer o jogo Humano vs. Humano. Queria saber se tem como mudar algumas linhas de código java e transformar em um jogo Computador vs. Humano. Já ouvi dizer que dá pra usar Algoritmo MiniMax mas eu não tenho ideia de como fazer isso. Se vocês poderem me ajudar eu agradeço muito, na boa.
O JFrame até agora tá assim, ó:

Blockquote
package jogodavelha;

import javax.swing.JOptionPane;

public class JogoDaVelha extends javax.swing.JFrame {

/**
 * Creates new form JogoDaVelha
 */
boolean JogadorAON = true;
boolean JogadorBON = false;
int aVenceu = 0;
int bVenceu = 0;
int empate = 0;
public JogoDaVelha() {
    initComponents();
}
 public void JogadorON() {
    if (JogadorAON == true) {
        JogadorAON = false;
        JogadorBON = true;
    } else {
        JogadorAON = true;
        JogadorBON = false;
    }
    
    JogadorVitorioso("X");
    JogadorVitorioso("0");
 }
   public void JogadorVitorioso(String Jogador) {
       if (botao1.getText().equals(Jogador) &&
            botao2.getText().equals(Jogador) &&
            botao3.getText().equals(Jogador)) {
        
        if (botao1.getText().equals("X"))
            Vencedor("Jogador A");
        else
            Vencedor("Jogador B");
        
    }
    
    
    if (botao4.getText().equals(Jogador) &&
            botao5.getText().equals(Jogador) &&
            botao6.getText().equals(Jogador)) {
        
        if (botao4.getText().equals("X"))
            Vencedor("Jogador A");
        else
            Vencedor("Jogador B");
        
    }
    
    
    if (botao7.getText().equals(Jogador) &&
            botao8.getText().equals(Jogador) &&
            botao9.getText().equals(Jogador)) {
        
        if (botao7.getText().equals("X"))
            Vencedor("Jogador A");
        else
            Vencedor("Jogador B");
        
    }
    
       if (botao1.getText().equals(Jogador) &&
            botao4.getText().equals(Jogador) &&
            botao7.getText().equals(Jogador)) {
        
        if (botao1.getText().equals("X"))
            Vencedor("Jogador A");
        else
            Vencedor("Jogador B");
        
    }
    
    
    if (botao2.getText().equals(Jogador) &&
            botao5.getText().equals(Jogador) &&
            botao8.getText().equals(Jogador)) {
        
        if (botao2.getText().equals("X"))
            Vencedor("Jogador A");
        else
            Vencedor("Jogador B");
        
    }
    
    
    if (botao3.getText().equals(Jogador) &&
            botao6.getText().equals(Jogador) &&
            botao9.getText().equals(Jogador)) {
        
        if (botao3.getText().equals("X"))
            Vencedor("Jogador A");
        else
            Vencedor("Jogador B");
        
    }
    
    
  
    if (botao1.getText().equals(Jogador) &&
            botao5.getText().equals(Jogador) &&
            botao9.getText().equals(Jogador)) {
        
        if (botao1.getText().equals("X"))
            Vencedor("Jogador A");
        else
            Vencedor("Jogador B");
        
    }
    
    
    if (botao3.getText().equals(Jogador) &&
            botao5.getText().equals(Jogador) &&
            botao7.getText().equals(Jogador)) {
        
        if (botao3.getText().equals("X"))
            Vencedor("Jogador A");
        else
            Vencedor("Jogador B");
        
    }
    
     if ( !botao1.getText().equals("") &&
            !botao2.getText().equals("") &&
            !botao3.getText().equals("") &&
            !botao4.getText().equals("") &&
            !botao5.getText().equals("") &&
            !botao6.getText().equals("") &&
            !botao7.getText().equals("") &&
            !botao8.getText().equals("") &&
            !botao9.getText().equals("") ) {
        
        Vencedor("Empate");
    }  
   }
     public void Vencedor(String JVencedor) {
         
    if (JVencedor.equals("Jogador A")) {
        JOptionPane.showMessageDialog(JogoDaVelha.this, "Parabéns Jogador A. Você venceu o Jogo!");
        aVenceu = aVenceu + 1;
        jlabel3.setText("Vitórias:  " + aVenceu);
        Reiniciar();
        
    }
    
    
    if (JVencedor.equals("Jogador B")) {
        JOptionPane.showMessageDialog(JogoDaVelha.this, "Parabéns Jogador B. Você venceu o Jogo!");
        bVenceu = bVenceu + 1;
       jLabel5.setText("Vitórias:  " + aVenceu);
        Reiniciar();
    }
       
    if (JVencedor.equals("Empate")) {
        JOptionPane.showMessageDialog(JogoDaVelha.this, "Deu Empate! Joguem novamente!");
        empate = empate + 1;
        jLabel6.setText("Empates: " + empate);
        Reiniciar();
    }
    
   
    
     }
       
public void Reiniciar() {
    
    botao1.setText("");
    botao2.setText("");
    botao3.setText("");
    botao4.setText("");
    botao5.setText("");
    botao6.setText("");
    botao7.setText("");
    botao8.setText("");
    botao9.setText("");
    
    JogadorAON = true;
    JogadorBON = false;
    
}
/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    jLabel1 = new javax.swing.JLabel();
    jPanel2 = new javax.swing.JPanel();
    jPanel3 = new javax.swing.JPanel();
    jLabel2 = new javax.swing.JLabel();
    jlabel3 = new javax.swing.JLabel();
    jLabel4 = new javax.swing.JLabel();
    jLabel5 = new javax.swing.JLabel();
    jLabel6 = new javax.swing.JLabel();
    jPanel1 = new javax.swing.JPanel();
    botao1 = new javax.swing.JButton();
    botao2 = new javax.swing.JButton();
    botao3 = new javax.swing.JButton();
    botao4 = new javax.swing.JButton();
    botao5 = new javax.swing.JButton();
    botao8 = new javax.swing.JButton();
    botao7 = new javax.swing.JButton();
    botao6 = new javax.swing.JButton();
    botao9 = new javax.swing.JButton();
    jLabel9 = new javax.swing.JLabel();
    jLabel7 = new javax.swing.JLabel();
    jPanel6 = new javax.swing.JPanel();
    novojogo = new javax.swing.JButton();
    sair = new javax.swing.JButton();
    jLabel8 = new javax.swing.JLabel();

    jLabel1.setText("jLabel1");

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setMinimumSize(new java.awt.Dimension(800, 800));

    jPanel3.setBackground(new java.awt.Color(0, 153, 0));
    jPanel3.setFont(new java.awt.Font("Times New Roman", 1, 12)); // NOI18N
    jPanel3.setMinimumSize(new java.awt.Dimension(0, 0));
    jPanel3.setName(""); // NOI18N
    jPanel3.setLayout(null);

    jLabel2.setFont(new java.awt.Font("Times New Roman", 3, 18)); // NOI18N
    jLabel2.setForeground(new java.awt.Color(255, 255, 255));
    jLabel2.setText("Jogador A seu símbolo é: X");
    jPanel3.add(jLabel2);
    jLabel2.setBounds(10, 30, 210, 22);

    jlabel3.setFont(new java.awt.Font("Times New Roman", 3, 18)); // NOI18N
    jlabel3.setForeground(new java.awt.Color(255, 255, 255));
    jlabel3.setText("Vitórias = 0");
    jPanel3.add(jlabel3);
    jlabel3.setBounds(10, 60, 150, 22);

    jLabel4.setFont(new java.awt.Font("Times New Roman", 3, 18)); // NOI18N
    jLabel4.setForeground(new java.awt.Color(255, 255, 255));
    jLabel4.setText("Jogador B seu símbolo é: O");
    jPanel3.add(jLabel4);
    jLabel4.setBounds(280, 30, 220, 17);

    jLabel5.setFont(new java.awt.Font("Times New Roman", 3, 18)); // NOI18N
    jLabel5.setForeground(new java.awt.Color(255, 255, 255));
    jLabel5.setText("Vitórias = 0");
    jPanel3.add(jLabel5);
    jLabel5.setBounds(280, 70, 150, 22);

    jLabel6.setFont(new java.awt.Font("Times New Roman", 3, 18)); // NOI18N
    jLabel6.setForeground(new java.awt.Color(255, 255, 255));
    jLabel6.setText("Empates = 0");
    jPanel3.add(jLabel6);
    jLabel6.setBounds(540, 20, 140, 22);

    jPanel1.setBackground(new java.awt.Color(204, 204, 204));
    jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
    jPanel1.setLayout(null);

    botao1.setBackground(new java.awt.Color(255, 255, 255));
    botao1.setFont(new java.awt.Font("Times New Roman", 1, 36)); // NOI18N
    botao1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
    botao1.setBorderPainted(false);
    botao1.setOpaque(false);
    botao1.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseClicked(java.awt.event.MouseEvent evt) {
            botao1MouseClicked(evt);
        }
    });
    botao1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            botao1ActionPerformed(evt);
        }
    });
    jPanel1.add(botao1);
    botao1.setBounds(20, 0, 198, 108);

    botao2.setBackground(new java.awt.Color(255, 255, 255));
    botao2.setFont(new java.awt.Font("Times New Roman", 1, 36)); // NOI18N
    botao2.setBorder(null);
    botao2.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            botao2ActionPerformed(evt);
        }
    });
    jPanel1.add(botao2);
    botao2.setBounds(250, 0, 200, 109);

    botao3.setBackground(new java.awt.Color(255, 255, 255));
    botao3.setFont(new java.awt.Font("Times New Roman", 1, 36)); // NOI18N
    botao3.setBorder(null);
    botao3.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            botao3ActionPerformed(evt);
        }
    });
    jPanel1.add(botao3);
    botao3.setBounds(480, 0, 189, 109);

    botao4.setBackground(new java.awt.Color(255, 255, 255));
    botao4.setFont(new java.awt.Font("Times New Roman", 1, 36)); // NOI18N
    botao4.setBorder(null);
    botao4.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            botao4ActionPerformed(evt);
        }
    });
    jPanel1.add(botao4);
    botao4.setBounds(20, 130, 198, 108);

    botao5.setBackground(new java.awt.Color(255, 255, 255));
    botao5.setFont(new java.awt.Font("Times New Roman", 1, 36)); // NOI18N
    botao5.setBorder(null);
    botao5.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            botao5ActionPerformed(evt);
        }
    });
    jPanel1.add(botao5);
    botao5.setBounds(250, 130, 200, 108);

    botao8.setBackground(new java.awt.Color(255, 255, 255));
    botao8.setFont(new java.awt.Font("Times New Roman", 1, 36)); // NOI18N
    botao8.setBorder(null);
    botao8.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            botao8ActionPerformed(evt);
        }
    });
    jPanel1.add(botao8);
    botao8.setBounds(250, 270, 200, 108);

    botao7.setBackground(new java.awt.Color(255, 255, 255));
    botao7.setFont(new java.awt.Font("Times New Roman", 1, 36)); // NOI18N
    botao7.setBorder(null);
    botao7.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            botao7ActionPerformed(evt);
        }
    });
    jPanel1.add(botao7);
    botao7.setBounds(20, 270, 198, 108);

    botao6.setBackground(new java.awt.Color(255, 255, 255));
    botao6.setFont(new java.awt.Font("Times New Roman", 1, 36)); // NOI18N
    botao6.setBorder(null);
    botao6.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            botao6ActionPerformed(evt);
        }
    });
    jPanel1.add(botao6);
    botao6.setBounds(480, 130, 187, 108);

    botao9.setBackground(new java.awt.Color(255, 255, 255));
    botao9.setFont(new java.awt.Font("Times New Roman", 1, 36)); // NOI18N
    botao9.setBorder(null);
    botao9.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            botao9ActionPerformed(evt);
        }
    });
    jPanel1.add(botao9);
    botao9.setBounds(480, 270, 187, 108);

    jLabel9.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jogodavelha/brasaotodo3.png"))); // NOI18N
    jPanel1.add(jLabel9);
    jLabel9.setBounds(0, 0, 690, 390);

    jPanel3.add(jPanel1);
    jPanel1.setBounds(0, 110, 690, 380);

    jLabel7.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jogodavelha/brasaotodo.png"))); // NOI18N
    jLabel7.setText("fd");
    jLabel7.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
    jPanel3.add(jLabel7);
    jLabel7.setBounds(0, 20, 690, 490);

    jPanel6.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
    jPanel6.setFont(new java.awt.Font("Times New Roman", 3, 48)); // NOI18N
    jPanel6.setLayout(null);

    novojogo.setText("NOVO JOGO");
    novojogo.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            novojogoActionPerformed(evt);
        }
    });
    jPanel6.add(novojogo);
    novojogo.setBounds(0, 0, 190, 23);

    sair.setText("SAIR");
    sair.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            sairActionPerformed(evt);
        }
    });
    jPanel6.add(sair);
    sair.setBounds(190, 0, 230, 23);

    jPanel3.add(jPanel6);
    jPanel6.setBounds(4, 0, 420, 20);
    jPanel6.getAccessibleContext().setAccessibleName("");

    jLabel8.setFont(new java.awt.Font("Times New Roman", 3, 18)); // NOI18N
    jLabel8.setForeground(new java.awt.Color(255, 255, 255));
    jLabel8.setText("# JOGO DA VELHA #");
    jPanel3.add(jLabel8);
    jLabel8.setBounds(450, 0, 190, 20);

    javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
    jPanel2.setLayout(jPanel2Layout);
    jPanel2Layout.setHorizontalGroup(
        jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jPanel2Layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, 707, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(73, Short.MAX_VALUE))
    );
    jPanel2Layout.setVerticalGroup(
        jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, 511, javax.swing.GroupLayout.PREFERRED_SIZE)
    );

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
            .addContainerGap(271, Short.MAX_VALUE)
            .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGap(266, 266, 266))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
            .addGap(0, 13, Short.MAX_VALUE)
            .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
    );

    pack();
}// </editor-fold>                        

private void novojogoActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
    Reiniciar();
}                                        

private void sairActionPerformed(java.awt.event.ActionEvent evt) {                                     
    // TODO add your handling code here:
    System.exit(0);
}                                    

private void botao2ActionPerformed(java.awt.event.ActionEvent evt) {                                       
    // TODO add your handling code here:
    if (JogadorAON == true) {
        if (botao2.getText().equals("")) {
            botao2.setText("X");
            JogadorON();
        }
    } else {
        if (botao2.getText().equals("")) {
            botao2.setText("0");
            JogadorON();
        }
    }
}                                      

private void botao9ActionPerformed(java.awt.event.ActionEvent evt) {                                       
    // TODO add your handling code here:
    if (JogadorAON == true) {
        if (botao9.getText().equals("")) {
            botao9.setText("X");
            JogadorON();
        }
    } else {
        if (botao9.getText().equals("")) {
            botao9.setText("0");
            JogadorON();
        }
    }
}                                      

private void botao6ActionPerformed(java.awt.event.ActionEvent evt) {                                       
    // TODO add your handling code here:
    if (JogadorAON == true) {
        if (botao6.getText().equals("")) {
            botao6.setText("X");
            JogadorON();
        }
    } else {
        if (botao6.getText().equals("")) {
            botao6.setText("0");
            JogadorON();
        }
    }
}                                      

private void botao7ActionPerformed(java.awt.event.ActionEvent evt) {                                       
    // TODO add your handling code here:
    if (JogadorAON == true) {
        if (botao7.getText().equals("")) {
            botao7.setText("X");
            JogadorON();
        }
    } else {
        if (botao7.getText().equals("")) {
            botao7.setText("0");
            JogadorON();
        }
    }
}                                      

private void botao8ActionPerformed(java.awt.event.ActionEvent evt) {                                       
    // TODO add your handling code here:
    if (JogadorAON == true) {
        if (botao8.getText().equals("")) {
            botao8.setText("X");
            JogadorON();
        }
    } else {
        if (botao8.getText().equals("")) {
            botao8.setText("0");
            JogadorON();
        }
    }
}                                      

private void botao5ActionPerformed(java.awt.event.ActionEvent evt) {                                       
    // TODO add your handling code here:
    if (JogadorAON == true) {
        if (botao5.getText().equals("")) {
            botao5.setText("X");
            JogadorON();
        }
    } else {
        if (botao5.getText().equals("")) {
            botao5.setText("0");
            JogadorON();
        }
    }
}                                      

private void botao4ActionPerformed(java.awt.event.ActionEvent evt) {                                       
    // TODO add your handling code here:
    if (JogadorAON == true) {
        if (botao4.getText().equals("")) {
            botao4.setText("X");
            JogadorON();
        }
    } else {
        if (botao4.getText().equals("")) {
            botao4.setText("0");
            JogadorON();
        }
    }
}                                      

private void botao3ActionPerformed(java.awt.event.ActionEvent evt) {                                       
    // TODO add your handling code here:
    if (JogadorAON == true) {
        if (botao3.getText().equals("")) {
            botao3.setText("X");
            JogadorON();
        }
    } else {
        if (botao3.getText().equals("")) {
            botao3.setText("0");
            JogadorON();
        }
    }
}                                      

private void botao1ActionPerformed(java.awt.event.ActionEvent evt) {                                       
    if (JogadorAON == true) {
        if (botao1.getText().equals("")) {
            botao1.setText("X");
            JogadorON();
        }
    } else {
        if (botao1.getText().equals("")) {
            botao1.setText("0");
            JogadorON();
        }
    }

    // TODO add your handling code here:
}                                      

private void botao1MouseClicked(java.awt.event.MouseEvent evt) {                                    
    // TODO add your handling code here:
}                                   

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    /* Set the Nimbus look and feel */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(JogoDaVelha.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(JogoDaVelha.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(JogoDaVelha.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(JogoDaVelha.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new JogoDaVelha().setVisible(true);
        }
    });
}

// Variables declaration - do not modify                     
private javax.swing.JButton botao1;
private javax.swing.JButton botao2;
private javax.swing.JButton botao3;
private javax.swing.JButton botao4;
private javax.swing.JButton botao5;
private javax.swing.JButton botao6;
private javax.swing.JButton botao7;
private javax.swing.JButton botao8;
private javax.swing.JButton botao9;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel6;
private javax.swing.JLabel jlabel3;
private javax.swing.JButton novojogo;
private javax.swing.JButton sair;
// End of variables declaration                   

}

Blockquote

Blz?
Cara o que você esta querendo é algo muito complexo (ainda mais para aplicar em um jogo de dama), recomendo parti para um jogo mais simples como “jogo da velha”.

Recomendo a leitura: http://www.organicadigital.com/seeds/algoritmo-minimax-introducao-a-inteligencia-artificial/

Para fazer Humano vs Computador, é só usar números aleatorios

Aí será um computador burro.

Acredito que a ideia do colega é implementar um computador que saiba ganhar do jogador humano.

Neste caso o mais famoso é o algoritmo mini-max mesmo.