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.");
}
}
}