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