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!