O meu jogo java não esta rodando na interface gráfica, pode me ajudar

2 respostas
M
import javax.swing.JOptionPane;

import java.util.Scanner;

import java.awt.EventQueue;

import javax.swing.JFrame;

import javax.swing.JButton;

import java.awt.Color;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

import javax.swing.JTextField;

import javax.swing.JLabel;

import javax.swing.JTextArea;

import javax.swing.JRadioButton;

import javax.swing.JToggleButton;

import javax.swing.JScrollBar;

import javax.swing.JComboBox;

import javax.swing.JCheckBox;

public class JogoVelha {
static String[][] tabuleiro = new String[3][3];

private JTextField[] x = new JTextField[9];

public static void main(String[] args) {

EventQueue.invokeLater(

new Runnable() {

public void run() {

try {

JogoVelha window = new JogoVelha();

window.frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}
public JogoVelha() {

initialize();

}
private JFrame frame;

private JTextField textField;

private JTextField textField_1;

private JTextField textField_2;
private void initialize() {

frame = new JFrame();

frame.setBounds(100, 100, 630, 489);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().setLayout(null);
JLabel titulo = new JLabel("JOGO DA VELHA - Autor: Mateus Breno - Set/2019");
  titulo.setBounds(65, 30, 500, 14);
  frame.getContentPane().add(titulo);
 

  JLabel subtitulo = new JLabel("Complete a coluna com 3 X ou 3 0");
  subtitulo.setBounds(65, 60, 500, 14);
  frame.getContentPane().add(subtitulo);
  
  JLabel cord = new JLabel("0        1        2");
  cord.setBounds(205, 80, 500, 14);
  frame.getContentPane().add(cord);
  
  JLabel cord1 = new JLabel("0");
  cord1.setBounds(180, 100, 20, 30);
  frame.getContentPane().add(cord1);
  
  JLabel cord2 = new JLabel("1");
  cord2.setBounds(180, 140, 20, 30);
  frame.getContentPane().add(cord2);
  
  JLabel cord3 = new JLabel("2");
  cord3.setBounds(180, 180, 20, 30);
  frame.getContentPane().add(cord3);

  JLabel lblName = new JLabel("Jogador:");
  lblName.setBounds(310, 100, 100, 14);
  frame.getContentPane().add(lblName);
  
  JLabel jogador = new JLabel("2");
  jogador.setBounds(400, 100, 86, 20);
  frame.getContentPane().add(jogador);
/*      textField.setBounds(400, 100, 86, 20);

frame.getContentPane().add(textField);

textField.setColumns(10);*/
JLabel lblAddress = new JLabel("Mensagem:");
  lblAddress.setBounds(310, 150, 100, 14);
  frame.getContentPane().add(lblAddress);
		
  JTextArea textArea_1 = new JTextArea();
  textArea_1.setBounds(400, 150, 180, 100);
  frame.getContentPane().add(textArea_1);
  textArea_1.setEditable(false);
  

  x[0] = new JTextField();
  x[0].setBounds(200, 100, 20, 30);
  frame.getContentPane().add(x[0]);
  x[0].setColumns(1);

  x[1] = new JTextField();
  x[1].setBounds(230, 100, 20, 30);
  frame.getContentPane().add(x[1]);
  x[1].setColumns(1);
 
  x[2] = new JTextField();
  x[2].setBounds(260, 100, 20, 30);
  frame.getContentPane().add(x[2]);
  x[2].setColumns(1);
 
  x[3] = new JTextField();
  x[3].setBounds(200, 140, 20, 30);
  frame.getContentPane().add(x[3]);
  x[3].setColumns(1);
 
  x[4] = new JTextField();
  x[4].setBounds(230, 140, 20, 30);
  frame.getContentPane().add(x[4]);
  x[4].setColumns(1);
 
 
  x[5] = new JTextField();
  x[5].setBounds(260, 140, 20, 30);
  frame.getContentPane().add(x[5]);
  x[5].setColumns(1);
 
  x[6] = new JTextField();
  x[6].setBounds(200, 180, 20, 30);
  frame.getContentPane().add(x[6]);
  x[6].setColumns(1);
 
  x[7] = new JTextField();
  x[7].setBounds(230, 180, 20, 30);
  frame.getContentPane().add(x[7]);
  x[7].setColumns(1);
 
  x[8] = new JTextField();
  x[8].setBounds(260, 180, 20, 30);
  frame.getContentPane().add(x[8]);
  x[8].setColumns(1);


  JButton btnClear = new JButton("Recomeçar");

  btnClear.setBounds(312, 387, 140, 23);
  frame.getContentPane().add(btnClear);
  
  	
  JButton btnSubmit = new JButton("Proximo");

  btnSubmit.setBackground(Color.GREEN);
  btnSubmit.setForeground(Color.MAGENTA);
  btnSubmit.setBounds(65, 387, 140, 23);
  frame.getContentPane().add(btnSubmit);
  btnSubmit.setEnabled(true);
   
   //Rjogovelha(frame);
}

//

public static boolean verJogada(String simbolo, int x, int y){

boolean vencedor = false;
if(x==0 && y==0){
       if((tabuleiro[0][1].equals(simbolo) && tabuleiro[0][2].equals(simbolo)) ||
          (tabuleiro[1][0].equals(simbolo) && tabuleiro[2][0].equals(simbolo)) ||
          (tabuleiro[1][1].equals(simbolo) && tabuleiro[2][2].equals(simbolo))){
           vencedor = true;
       }
   }
   if(x==0 && y==1){
       if((tabuleiro[0][0].equals(simbolo) && tabuleiro[0][2].equals(simbolo)) ||
          (tabuleiro[1][1].equals(simbolo) && tabuleiro[2][1].equals(simbolo))){
           vencedor = true;
       }
       
   }
   if(x==0 && y==2){
       if((tabuleiro[0][1].equals(simbolo) && tabuleiro[0][0].equals(simbolo)) ||
          (tabuleiro[1][2].equals(simbolo) && tabuleiro[2][2].equals(simbolo)) ||
          (tabuleiro[1][1].equals(simbolo) && tabuleiro[2][0].equals(simbolo))){
           vencedor = true;
       }
   }
   
   if(x==1 && y==0){
       if((tabuleiro[0][0].equals(simbolo) && tabuleiro[2][0].equals(simbolo)) ||
          (tabuleiro[1][1].equals(simbolo) && tabuleiro[1][2].equals(simbolo))){
           vencedor = true;
       }
   }
   if(x==1 && y==1){
       if((tabuleiro[0][1].equals(simbolo) && tabuleiro[2][1].equals(simbolo)) ||
          (tabuleiro[1][0].equals(simbolo) && tabuleiro[1][2].equals(simbolo)) ||
          (tabuleiro[0][0].equals(simbolo) && tabuleiro[2][2].equals(simbolo)) ||
          (tabuleiro[0][2].equals(simbolo) && tabuleiro[2][0].equals(simbolo))){
           vencedor = true;
       }
   }
   if(x==1 && y==2){
       if((tabuleiro[0][2].equals(simbolo) && tabuleiro[2][2].equals(simbolo)) ||
          (tabuleiro[1][1].equals(simbolo) && tabuleiro[1][0].equals(simbolo))){
           vencedor = true;
       }
   }
   
   if(x==2 && y==0){
       if((tabuleiro[0][0].equals(simbolo) && tabuleiro[1][0].equals(simbolo)) ||
          (tabuleiro[2][1].equals(simbolo) && tabuleiro[2][2].equals(simbolo)) ||
          (tabuleiro[1][1].equals(simbolo) && tabuleiro[0][2].equals(simbolo))){
           vencedor = true;
       }
   }
   if(x==2 && y==1){
       if((tabuleiro[2][0].equals(simbolo) && tabuleiro[2][2].equals(simbolo)) ||
          (tabuleiro[1][1].equals(simbolo) && tabuleiro[0][1].equals(simbolo))){
           vencedor = true;
       }
   }
   if(x==2 && y==2){
       if((tabuleiro[2][1].equals(simbolo) && tabuleiro[2][0].equals(simbolo)) ||
          (tabuleiro[1][2].equals(simbolo) && tabuleiro[0][2].equals(simbolo)) ||
          (tabuleiro[1][1].equals(simbolo) && tabuleiro[0][0].equals(simbolo))){
           vencedor = true;
       }
   }
   return vencedor;
}

public void jogovelha(JFrame frame) {
    int x = 0;
    int y = 0;
    int jogador = 1;
    boolean vencedor = false;
    int jogadas = 0;


    // preenche os índices da matriz com uma string vazia
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            tabuleiro[i][j] = "-";
        }
    }
    
       while (!vencedor && jogadas < 9) {
        java.util.Scanner s = new Scanner(System.in);
        JOptionPane.showMessageDialog(frame,"X (Linha): ");
        x = s.nextInt();
        while(x<0 || x>2){
            JOptionPane.showMessageDialog(frame,"Índice da linha inválido\nX (Linha): ");
            s = new Scanner(System.in);
            x = s.nextInt();
        }
        s = new Scanner(System.in);
        JOptionPane.showMessageDialog(frame,"Y (Coluna): ");
        y = s.nextInt();
        while(y<0 || y>2){
            JOptionPane.showMessageDialog(frame,"Índice da coluna inválido\nY (Coluna): ");
            s = new Scanner(System.in);
            y = s.nextInt();
        }
        
        boolean jogada = false;

        if (jogador == 1) {
            try {
                if (!tabuleiro[x][y].equals("X") && !tabuleiro[x][y].equals("Y")) {
                    tabuleiro[x][y] = "X";
                    jogada = true;
                    jogadas++;
                    vencedor = verJogada("X", x, y);
                } else {
                    JOptionPane.showMessageDialog(frame,"\n Posição já preenchida. \n");
                    jogada = false;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            try {
                if (!tabuleiro[x][y].equals("X") && !tabuleiro[x][y].equals("Y")) {
                    tabuleiro[x][y] = "O";
                    jogada = true;
                    jogadas++;
                    vencedor = verJogada("O", x, y);
                } else {
                    JOptionPane.showMessageDialog(frame,"\nPosição já preenchida.");
                    jogada = false;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        
        if (jogada && !vencedor) {
            if (jogador == 1) {
                jogador = 2;
            } else {
                jogador = 1;
            }
        }

        String matriz = "\n";
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                matriz += tabuleiro[i][j] + " ";
            }
            matriz += "\n";
        }
       JOptionPane.showMessageDialog(frame,matriz);
    }
    
    if(vencedor){
        JOptionPane.showMessageDialog(frame,"Jogador "+jogador+" foi o vencedor.");
    }else{
        JOptionPane.showMessageDialog(frame,"Jogo terminou empatado.");
       }
    
    }
  }

2 Respostas

Jothar_Aleksander

Apresenta algum erro? A tela não abre ou não aparece? Detalhe melhor.

M

Não aparece nenhum erro, abre normal a interface gráfica, junto com o tabuleiro, as mensagens que coloquei para aparecer, mas não consigo jogar dentro dela, copila e roda bonito, mas quando vou iniciar a partida não vai, tem que selecionar com o mouse, e quando tem um vencedor, não mostra quem nenhuma mensagem de vencedor

Criado 28 de setembro de 2019
Ultima resposta 28 de set. de 2019
Respostas 2
Participantes 2