Duvida com orientacao a objeto em jogo

2 respostas
T

Oi pessoal, beleza?

Então busquei em fóruns jogos parecidos com este mas ainda nao consegui resolver neste caso, desculpa a pergunta parece boba, mas sou ainda bem iniciante em Orientação a objetos…

É um jogo da velha que, como qualquer jogo da velha, após ter uma sequência horizontal, vertical ou diagonal de um jogador ou outro o jogo acaba… mais neste eu estou perdido no código, o jogo às vezes “fecha” sem ter completado a sequência ou quando se completa ele não fecha, não sei aonde está o erro.

Segue o código:

package jogoDaVelha;   
  
  
import java.awt.Color;   
import javax.swing.JOptionPane;   
  
  
public class FrmJogoVelha extends javax.swing.JFrame {   
    int vez = 0; //inicia o contador para definir de quem é a vez   
    String jogador1 = "", jogador2 = "", vencedor = "";   
  
    /** Creates new form FrmJogoVelha */  
    public FrmJogoVelha() {   
        initComponents();   
        this.jogador1 = JOptionPane.showInputDialog(null, "Entre com o nome" +   
                "do jogador X", "Jogo da Velha", JOptionPane.QUESTION_MESSAGE);   
        this.jogador2 = JOptionPane.showInputDialog(null, "Entre com o nome" +   
                "do jogador 0", "Jogo da Velha", JOptionPane.QUESTION_MESSAGE);   
    }   
  
       
    @SuppressWarnings("unchecked")   
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                             
    private void initComponents() {   
  
        cmdB9 = new javax.swing.JButton();   
        cmdB7 = new javax.swing.JButton();   
        cmdB8 = new javax.swing.JButton();   
        cmdB1 = new javax.swing.JButton();   
        cmdB2 = new javax.swing.JButton();   
        cmdB3 = new javax.swing.JButton();   
        cmdB4 = new javax.swing.JButton();   
        cmdB5 = new javax.swing.JButton();   
        cmdB6 = new javax.swing.JButton();   
  
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);   
        setTitle("Jogo da Velha");   
        setResizable(false);   
        getContentPane().setLayout(null);   
  
        cmdB9.setFont(new java.awt.Font("Verdana", 0, 36)); // NOI18N   
        cmdB9.setForeground(new java.awt.Color(255, 51, 51));   
        cmdB9.addActionListener(new java.awt.event.ActionListener() {   
            public void actionPerformed(java.awt.event.ActionEvent evt) {   
                cmdB9ActionPerformed(evt);   
            }   
        });   
        getContentPane().add(cmdB9);   
        cmdB9.setBounds(260, 160, 130, 80);   
  
        cmdB7.setFont(new java.awt.Font("Verdana", 0, 36)); // NOI18N   
        cmdB7.setForeground(new java.awt.Color(255, 51, 51));   
        cmdB7.addActionListener(new java.awt.event.ActionListener() {   
            public void actionPerformed(java.awt.event.ActionEvent evt) {   
                cmdB7ActionPerformed(evt);   
            }   
        });   
        getContentPane().add(cmdB7);   
        cmdB7.setBounds(0, 160, 130, 80);   
  
        cmdB8.setFont(new java.awt.Font("Verdana", 0, 36)); // NOI18N   
        cmdB8.setForeground(new java.awt.Color(255, 51, 51));   
        cmdB8.addActionListener(new java.awt.event.ActionListener() {   
            public void actionPerformed(java.awt.event.ActionEvent evt) {   
                cmdB8ActionPerformed(evt);   
            }   
        });   
        getContentPane().add(cmdB8);   
        cmdB8.setBounds(130, 160, 130, 80);   
  
        cmdB1.setFont(new java.awt.Font("Verdana", 0, 36)); // NOI18N   
        cmdB1.setForeground(new java.awt.Color(255, 51, 51));   
        cmdB1.addActionListener(new java.awt.event.ActionListener() {   
            public void actionPerformed(java.awt.event.ActionEvent evt) {   
                cmdB1ActionPerformed(evt);   
            }   
        });   
        getContentPane().add(cmdB1);   
        cmdB1.setBounds(0, 0, 130, 80);   
  
        cmdB2.setFont(new java.awt.Font("Verdana", 0, 36)); // NOI18N   
        cmdB2.setForeground(new java.awt.Color(255, 51, 51));   
        cmdB2.addActionListener(new java.awt.event.ActionListener() {   
            public void actionPerformed(java.awt.event.ActionEvent evt) {   
                cmdB2ActionPerformed(evt);   
            }   
        });   
        getContentPane().add(cmdB2);   
        cmdB2.setBounds(130, 0, 130, 80);   
  
        cmdB3.setFont(new java.awt.Font("Verdana", 0, 36)); // NOI18N   
        cmdB3.setForeground(new java.awt.Color(255, 51, 51));   
        cmdB3.addActionListener(new java.awt.event.ActionListener() {   
            public void actionPerformed(java.awt.event.ActionEvent evt) {   
                cmdB3ActionPerformed(evt);   
            }   
        });   
        getContentPane().add(cmdB3);   
        cmdB3.setBounds(260, 0, 130, 80);   
  
        cmdB4.setFont(new java.awt.Font("Verdana", 0, 36)); // NOI18N   
        cmdB4.setForeground(new java.awt.Color(255, 51, 51));   
        cmdB4.addActionListener(new java.awt.event.ActionListener() {   
            public void actionPerformed(java.awt.event.ActionEvent evt) {   
                cmdB4ActionPerformed(evt);   
            }   
        });   
        getContentPane().add(cmdB4);   
        cmdB4.setBounds(0, 80, 130, 80);   
  
        cmdB5.setFont(new java.awt.Font("Verdana", 0, 36)); // NOI18N   
        cmdB5.setForeground(new java.awt.Color(255, 51, 51));   
        cmdB5.addActionListener(new java.awt.event.ActionListener() {   
            public void actionPerformed(java.awt.event.ActionEvent evt) {   
                cmdB5ActionPerformed(evt);   
            }   
        });   
        getContentPane().add(cmdB5);   
        cmdB5.setBounds(130, 80, 130, 80);   
  
        cmdB6.setFont(new java.awt.Font("Verdana", 0, 36)); // NOI18N   
        cmdB6.setForeground(new java.awt.Color(255, 51, 51));   
        cmdB6.addActionListener(new java.awt.event.ActionListener() {   
            public void actionPerformed(java.awt.event.ActionEvent evt) {   
                cmdB6ActionPerformed(evt);   
            }   
        });   
        getContentPane().add(cmdB6);   
        cmdB6.setBounds(260, 80, 130, 80);   
  
        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();   
        setBounds((screenSize.width-398)/2, (screenSize.height-273)/2, 398, 273);   
    }// </editor-fold>                           
  
    private void cmdB2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:   
        vez++; //incrementa o numero da vez   
        if (vez % 2 == 0){   
            cmdB2.setText("0");   
            cmdB2.setForeground(Color.red);   
            if (vez == 5){   
        vencedor = ganhou();   
        if (!vencedor.equals("") && !vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Parabéns, " + vencedor +   
            "você ganhou", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
        else if(vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Ninguem ganhou. \n" +   
                    "Deu Velha", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
          }   
        else{   
            cmdB2.setText("X");   
            cmdB2.setForeground(Color.blue);   
        }   
         if (vez == 5){   
        vencedor = ganhou();   
        if (!vencedor.equals("") && !vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Parabéns, " + vencedor +   
            "você ganhou", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
        else if(vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Ninguem ganhou. \n" +   
                    "Deu Velha", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
         }   
            
    }                                        
  
    private void cmdB1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:   
        vez++; //incrementa o numero da vez   
        if (vez % 2 == 0){   
            cmdB1.setText("0");   
            cmdB1.setForeground(Color.red);   
            if (vez == 5){   
        vencedor = ganhou();   
        if (!vencedor.equals("") && !vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Parabéns, " + vencedor +   
            "você ganhou", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
        else if(vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Ninguem ganhou. \n" +   
                    "Deu Velha", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
          }   
        else{   
            cmdB1.setText("X");   
            cmdB1.setForeground(Color.blue);   
        }   
         if (vez == 5){   
        vencedor = ganhou();   
        if (!vencedor.equals("") && !vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Parabéns, " + vencedor +   
            "você ganhou", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
        else if(vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Ninguem ganhou. \n" +   
                    "Deu Velha", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
         }   
            
    }   
  
    }                                        
  
    private void cmdB3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:   
         vez++; //incrementa o numero da vez   
        if (vez % 2 == 0){   
            cmdB3.setText("0");   
            cmdB3.setForeground(Color.red);   
          }   
        else{   
            cmdB3.setText("X");   
            cmdB3.setForeground(Color.blue);   
        }   
         if (vez == 5){   
        vencedor = ganhou();   
        if (!vencedor.equals("") && !vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Parabéns, " + vencedor +   
            "você ganhou", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
        else if(vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Ninguem ganhou. \n" +   
                    "Deu Velha", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
         }   
    }                                        
  
    private void cmdB4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:   
         vez++; //incrementa o numero da vez   
        if (vez % 2 == 0){   
            cmdB4.setText("0");   
            cmdB4.setForeground(Color.red);   
          }   
        else{   
            cmdB4.setText("X");   
            cmdB4.setForeground(Color.blue);   
        }   
          if (vez == 5){   
        vencedor = ganhou();   
        if (!vencedor.equals("") && !vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Parabéns, " + vencedor +   
            "você ganhou", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
        else if(vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Ninguem ganhou. \n" +   
                    "Deu Velha", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
          }   
    }                                        
  
    private void cmdB5ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:  vez++; //incrementa o numero da vez   
       vez++; //incrementa o numero da vez   
       if (vez % 2 == 0){   
            cmdB5.setText("0");   
            cmdB5.setForeground(Color.red);   
          }   
        else{   
            cmdB5.setText("X");   
            cmdB5.setForeground(Color.blue);   
        }   
         if (vez == 5){   
        vencedor = ganhou();   
        if (!vencedor.equals("") && !vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Parabéns, " + vencedor +   
            "você ganhou", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
        else if(vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Ninguem ganhou. \n" +   
                    "Deu Velha", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
         }   
    }                                        
  
    private void cmdB6ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:   
          vez++; //incrementa o numero da vez   
        if (vez % 2 == 0){   
            cmdB6.setText("0");   
            cmdB6.setForeground(Color.red);   
          }   
        else{   
            cmdB6.setText("X");   
            cmdB6.setForeground(Color.blue);   
        }   
        if (vez == 5){   
        vencedor = ganhou();   
        if (!vencedor.equals("") && !vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Parabéns, " + vencedor +   
            "você ganhou", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
        else if(vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Ninguem ganhou. \n" +   
                    "Deu Velha", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
        }   
    }                                        
  
    private void cmdB7ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:   
          vez++; //incrementa o numero da vez   
        if (vez % 2 == 0){   
            cmdB7.setText("0");   
            cmdB7.setForeground(Color.red);   
          }   
        else{   
            cmdB7.setText("X");   
            cmdB7.setForeground(Color.blue);   
        }   
        if (vez == 5){   
        vencedor = ganhou();   
        if (!vencedor.equals("") && !vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Parabéns, " + vencedor +   
            "você ganhou", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
        else if(vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Ninguem ganhou. \n" +   
                    "Deu Velha", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
        }   
    }                                        
  
    private void cmdB8ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:   
          vez++; //incrementa o numero da vez   
        if (vez % 2 == 0){   
            cmdB8.setText("0");   
            cmdB8.setForeground(Color.red);   
          }   
        else{   
            cmdB8.setText("X");   
            cmdB8.setForeground(Color.blue);   
        }   
        if (vez == 5){   
        vencedor = ganhou();   
        if (!vencedor.equals("") && !vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Parabéns, " + vencedor +   
            "você ganhou", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
        else if(vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Ninguem ganhou. \n" +   
                    "Deu Velha", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
        }   
    }                                        
  
    private void cmdB9ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:   
          vez++; //incrementa o numero da vez   
        if (vez % 2 == 0){   
            cmdB9.setText("0");   
            cmdB9.setForeground(Color.red);   
          }   
        else{   
            cmdB9.setText("X");   
            cmdB9.setForeground(Color.blue);   
        }   
        if (vez == 5){   
        vencedor = ganhou();   
        if (!vencedor.equals("") && !vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Parabéns, " + vencedor +   
            "você ganhou", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
        else if(vencedor.equals("Deu Velha")){   
            JOptionPane.showMessageDialog(null, "Ninguem ganhou. \n" +   
                    "Deu Velha", "Jogo da Velha", JOptionPane.INFORMATION_MESSAGE);   
        }   
           }   
    }                                        
  
    /**  
    * @param args the command line arguments  
    */  
    public static void main(String args[]) {   
        java.awt.EventQueue.invokeLater(new Runnable() {   
            public void run() {   
                new FrmJogoVelha().setVisible(true);   
            }   
        });   
    }   
  
    // Variables declaration - do not modify                        
    private javax.swing.JButton cmdB1;   
    private javax.swing.JButton cmdB2;   
    private javax.swing.JButton cmdB3;   
    private javax.swing.JButton cmdB4;   
    private javax.swing.JButton cmdB5;   
    private javax.swing.JButton cmdB6;   
    private javax.swing.JButton cmdB7;   
    private javax.swing.JButton cmdB8;   
    private javax.swing.JButton cmdB9;   
    // End of variables declaration                      
  
    public String ganhou(){   
        String b1 = cmdB1.getText();   
        String b2 = cmdB2.getText();   
        String b3 = cmdB3.getText();   
        String b4 = cmdB4.getText();   
        String b5 = cmdB5.getText();   
        String b6 = cmdB6.getText();   
        String b7 = cmdB7.getText();   
        String b8 = cmdB8.getText();   
        String b9 = cmdB9.getText();   
  
        //Linhas   
  
        if(b1.equals(b2) && b2.equals(b3)){   
            if(b1.equals("X")){   
                return this.jogador1;   
            }   
            else{   
                return this.jogador2;   
            }   
        }   
        if(b4.equals(b5) && b5.equals(b6)){   
            if(b4.equals("X")){   
                return this.jogador1;   
            }   
            else{   
                return this.jogador2;   
            }   
    }   
        if(b7.equals(b8) && b8.equals(b9)){   
            if(b7.equals("X")){   
                return this.jogador1;   
            }   
            else{   
                return this.jogador2;   
            }   
    }   
        //COLUNAS   
  
        if(b1.equals(b4) && b4.equals(b7)){   
            if(b1.equals("X")){   
                return this.jogador1;   
            }   
            else{   
                return this.jogador2;   
            }   
        }   
        if(b2.equals(b5) && b5.equals(b8)){   
            if(b2.equals("X")){   
                return this.jogador1;   
            }   
            else{   
                return this.jogador2;   
            }   
    }   
        if(b3.equals(b6) && b6.equals(b9)){   
            if(b3.equals("X")){   
                return this.jogador1;   
            }   
            else{   
                return this.jogador2;   
            }   
    }   
    //Diagonais   
  
        if(b1.equals(b5) && b5.equals(b9)){   
            if(b1.equals("X")){   
                return this.jogador1;   
            }   
            else{   
                return this.jogador2;   
            }   
        }   
        if(b3.equals(b5) && b5.equals(b7)){   
            if(b3.equals("X")){   
                return this.jogador1;   
            }   
            else{   
                return this.jogador2;   
            }   
    }   
  
        if (vez == 9){   
            return "Deu Velha";   
        }   
        return "";   
    }   
}

Desde já agradeço!

2 Respostas

Eder_Peixoto

Ué! Insira print’s até encontrar.

WellingtonRamos

Olá,
Copiei teu código e há um erro de sintaxe nele.
Porém não ocorreu nenhuma vez dele fechar.
Mas, ao clicar num botão, as vezes não marcou, outras vezes, trocou o texto, marcou vitória em casos claramente inválidos…

E, apesar do título do tópico, não achei que seu código esteja desenvolvido utilizando orientação a objetos (usar java não garante orientação a objeto).

Criado 19 de novembro de 2010
Ultima resposta 19 de nov. de 2010
Respostas 2
Participantes 3