I'm finishing a game of the old woman, and I would like that when someone wins the game, a line is drawn on the line, column or diagonal, on which the game was completed. I'll post my code below:
This is the class of the game, where it defines the Labels, Buttons, Panels, etc.
It also takes all the decisions of the game, setting X or O on a particular Label
When the player clicks on it
All board checks, if one player has won, if it is complete, are made
Tray that I put it down.
public class Jogo extends javax.swing.JFrame {
private static JButton botaoJogar;
private static JLabel labelJogador2;
static JPanel panel1, panel2, panel3;
static JPanel panel4, panel5, panel6;
static JPanel panel7, panel8, panel9;
private static JLabel labelVezJogador;
private static JLabel labelO;
private static JLabel labelX;
private static JLabel labelJogador1;
static JLabel label1, label2, label3;
static JLabel label4, label5, label6;
static JLabel label7, label8, label9;
private static int flag = 0, flag2 = 0;
private String nome, nome2;
Font f = new Font("SansSerif", Font.BOLD, 40);
static Tabuleiro tabuleiro = new Tabuleiro();
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Jogo inst = new Jogo();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
inst.setLocation(0, 0);
inst.setSize(500, 500);
}
});
}
public Jogo() {
super();
initGUI();
}
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
getContentPane().setLayout(null);
{
botaoJogar = new JButton();
botaoJogar.setText("Jogar");
botaoJogar.setBounds(180, 28, 145, 41);
getContentPane().add(botaoJogar);
botaoJogar.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
tabuleiro.zeraTabuleiro();
flag2 = 0;
nome = JOptionPane.showInputDialog(null, "Informe o nome do jogador 1: ");
labelJogador1.setText(nome.toUpperCase());
nome2 = JOptionPane.showInputDialog(null, "Informe o nome do jogador 2: ");
labelJogador2.setText(nome2.toUpperCase());
vezJogador1();
acao();
}
});
}
{
labelJogador1 = new JLabel();
getContentPane().add(labelJogador1);
labelJogador1.setText("Jogador 1");
labelJogador1.setBounds(37, 61, 97, 35);
}
{
labelX = new JLabel();
getContentPane().add(labelX);
labelX.setText("X");
labelX.setBounds(54, 88, 15, 14);
}
{
labelO = new JLabel();
getContentPane().add(labelO);
labelO.setText("O");
labelO.setBounds(394, 88, 15, 14);
}
{
labelJogador2 = new JLabel();
getContentPane().add(labelJogador2);
labelJogador2.setText("Jogador 2");
labelJogador2.setBounds(375, 61, 97, 35);
}
{
labelVezJogador = new JLabel();
getContentPane().add(labelVezJogador);
labelVezJogador.setText("Vez do Jogador: ");
labelVezJogador.setBounds(192, 102, 200, 24);
}
{
panel1 = new JPanel();
panel1.setBounds(158, 152, 60, 60);
panel1.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
getContentPane().add(panel1);
panel1.setVisible(true);
}
{
label1 = new JLabel();
label1.setFont(f);
label1.setBounds(184, 152, 60, 60);
panel1.add(label1);
label1.setVisible(false);
}
{
panel2 = new JPanel();
getContentPane().add(panel2);
panel2.setBounds(218, 152, 60, 60);
panel2.setVisible(true);
panel2.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
}
{
label2 = new JLabel();
label2.setFont(f);
label2.setBounds(243, 152, 60, 60);
panel2.add(label2);
label2.setVisible(false);
}
{
panel3 = new JPanel();
getContentPane().add(panel3);
panel3.setBounds(278, 152, 60, 60);
panel3.setVisible(true);
panel3.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
}
{
label3 = new JLabel();
label3.setFont(f);
label3.setBounds(302, 152, 60, 60);
panel3.add(label3);
label3.setVisible(false);
}
{
panel4 = new JPanel();
getContentPane().add(panel4);
panel4.setBounds(158, 212, 60, 60);
panel4.setVisible(true);
panel4.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
}
{
label4 = new JLabel();
label4.setFont(f);
label4.setBounds(184, 213, 60, 60);
panel4.add(label4);
label4.setVisible(false);
}
{
panel5 = new JPanel();
getContentPane().add(panel5);
panel5.setBounds(218, 212, 60, 60);
panel5.setVisible(true);
panel5.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
}
{
label5 = new JLabel();
label5.setFont(f);
label5.setBounds(243, 212, 60, 60);
panel5.add(label5);
label5.setVisible(false);
}
{
panel6 = new JPanel();
getContentPane().add(panel6);
panel6.setBounds(278, 212, 60, 60);
panel6.setVisible(true);
panel6.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
}
{
label6 = new JLabel();
label6.setFont(f);
label6.setBounds(302, 213, 60, 60);
panel6.add(label6);
label6.setVisible(false);
}
{
panel7 = new JPanel();
getContentPane().add(panel7);
panel7.setBounds(158, 272, 60, 60);
panel7.setVisible(true);
panel7.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
}
{
label7 = new JLabel();
label7.setFont(f);
label7.setBounds(184, 273, 60, 60);
panel7.add(label7);
label7.setVisible(false);
}
{
panel8 = new JPanel();
getContentPane().add(panel8);
panel8.setBounds(218, 272, 60, 60);
panel8.setVisible(true);
panel8.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
}
{
label8 = new JLabel();
label8.setFont(f);
label8.setBounds(243, 273, 60, 60);
panel8.add(label8);
label8.setVisible(false);
}
{
panel9 = new JPanel();
getContentPane().add(panel9);
panel9.setBounds(278, 272, 60, 60);
panel9.setVisible(true);
panel9.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
}
{
label9 = new JLabel();
label9.setFont(f);
label9.setBounds(302, 273, 60, 60);
panel9.add(label9);
label9.setVisible(false);
}
linha.setBounds(158, 172, 180, 180);
linha.setBackground(Color.black);
getContentPane().add(linha);
pack();
// this.setSize(500, 400);
} catch (Exception e) {
//add your error handling code here
e.printStackTrace();
}
}
public void acao(){
panel1.addMouseListener(new java.awt.event.MouseAdapter(){
public void mouseClicked(java.awt.event.MouseEvent evt) {
if(panel1.isEnabled()){
if(flag == 1){
alteraLabelJogador1(label1);
panel1.setEnabled(false);
}
else if(flag == 2){
alteraLabelJogador2(label1);
panel1.setEnabled(false);
}
}
}
});
panel2.addMouseListener(new java.awt.event.MouseAdapter(){
public void mouseClicked(java.awt.event.MouseEvent evt) {
if(panel2.isEnabled()){
if(flag == 1){
alteraLabelJogador1(label2);
panel2.setEnabled(false);
}
else if(flag == 2){
alteraLabelJogador2(label2);
panel2.setEnabled(false);
}
}
}
});
panel3.addMouseListener(new java.awt.event.MouseAdapter(){
public void mouseClicked(java.awt.event.MouseEvent evt) {
if(panel3.isEnabled()){
if(flag == 1){
alteraLabelJogador1(label3);
panel3.setEnabled(false);
}
else if(flag == 2){
alteraLabelJogador2(label3);
panel3.setEnabled(false);
}
}
}
});
panel4.addMouseListener(new java.awt.event.MouseAdapter(){
public void mouseClicked(java.awt.event.MouseEvent evt) {
if(panel4.isEnabled()){
if(flag == 1){
alteraLabelJogador1(label4);
panel4.setEnabled(false);
}
else if(flag == 2){
alteraLabelJogador2(label4);
panel4.setEnabled(false);
}
}
}
});
panel5.addMouseListener(new java.awt.event.MouseAdapter(){
public void mouseClicked(java.awt.event.MouseEvent evt) {
if(panel5.isEnabled()){
if(flag == 1){
alteraLabelJogador1(label5);
panel5.setEnabled(false);
}
else if(flag == 2){
alteraLabelJogador2(label5);
panel5.setEnabled(false);
}
}
}
});
panel6.addMouseListener(new java.awt.event.MouseAdapter(){
public void mouseClicked(java.awt.event.MouseEvent evt) {
if(panel6.isEnabled()){
if(flag == 1){
alteraLabelJogador1(label6);
panel6.setEnabled(false);
}
else if(flag == 2){
alteraLabelJogador2(label6);
panel6.setEnabled(false);
}
}
}
});
panel7.addMouseListener(new java.awt.event.MouseAdapter(){
public void mouseClicked(java.awt.event.MouseEvent evt) {
if(panel7.isEnabled()){
if(flag == 1){
alteraLabelJogador1(label7);
panel7.setEnabled(false);
}
else if(flag == 2){
alteraLabelJogador2(label7);
panel7.setEnabled(false);
}
}
}
});
panel8.addMouseListener(new java.awt.event.MouseAdapter(){
public void mouseClicked(java.awt.event.MouseEvent evt) {
if(panel8.isEnabled()){
if(flag == 1){
alteraLabelJogador1(label8);
panel8.setEnabled(false);
}
else if(flag == 2){
alteraLabelJogador2(label8);
panel8.setEnabled(false);
}
}
}
});
panel9.addMouseListener(new java.awt.event.MouseAdapter(){
public void mouseClicked(java.awt.event.MouseEvent evt) {
if(panel9.isEnabled()){
if(flag == 1){
alteraLabelJogador1(label9);
panel9.setEnabled(false);
}
else if(flag == 2){
alteraLabelJogador2(label9);
panel9.setEnabled(false);
}
}
}
});
}
public static void vezJogador1(){
labelVezJogador.setText("Vez do Jogador: " + labelJogador1.getText().toUpperCase());
flag = 1;
}
public static void vezJogador2(){
labelVezJogador.setText("Vez do Jogador: " + labelJogador2.getText().toUpperCase());
flag = 2;
}
public static void desabilitaPanels(){
panel1.setEnabled(false);
panel2.setEnabled(false);
panel3.setEnabled(false);
panel4.setEnabled(false);
panel5.setEnabled(false);
panel6.setEnabled(false);
panel7.setEnabled(false);
panel8.setEnabled(false);
panel9.setEnabled(false);
}
public static void alteraLabelJogador1(JLabel label){
label.setText("X");
label.setVisible(true);
checar();
if(flag2 == 0 && tabuleiro.tabuleiroCompleto()){
labelVezJogador.setText(" ");
Velha();
JOptionPane.showMessageDialog(null ,"DEU VELHA!");
}
if(flag2 == 0 && !tabuleiro.tabuleiroCompleto()){
vezJogador2();
}
}
public static void alteraLabelJogador2(JLabel label){
label.setText("O");
label.setVisible(true);
checar();
if(flag2 == 0 && tabuleiro.tabuleiroCompleto()){
labelVezJogador.setText(" ");
Velha();
JOptionPane.showMessageDialog(null,"DEU VELHA!");
}
if(flag2 == 0 && !tabuleiro.tabuleiroCompleto()){
vezJogador1();
}
}
public static int checar(){
int num;
num = tabuleiro.checaLinhas();
if(num == 1){
flag2 = 1;
labelVezJogador.setText("");
desabilitaPanels();
JOptionPane.showMessageDialog(null, "Jogador " + labelJogador1.getText() + " venceu o jogo!");
return 1;
}
else if(num == 0){
flag2 = 1;
labelVezJogador.setText("");
desabilitaPanels();
JOptionPane.showMessageDialog(null, "Jogador " + labelJogador2.getText() + " venceu o jogo!");
return 1;
}
num = tabuleiro.checaColunas();
if(num == 1){
flag2 = 1;
labelVezJogador.setText("");
desabilitaPanels();
JOptionPane.showMessageDialog(null, "Jogador " + labelJogador1.getText() + " venceu o jogo!");
return 1;
}
else if(num == 0){
flag2 = 1;
labelVezJogador.setText("");
desabilitaPanels();
JOptionPane.showMessageDialog(null, "Jogador " + labelJogador2.getText() + " venceu o jogo!");
return 1;
}
num = tabuleiro.checaDiagonais();
if(num == 1){
flag2 = 1;
labelVezJogador.setText("");
desabilitaPanels();
JOptionPane.showMessageDialog(null, "Jogador " + labelJogador1.getText() + " venceu o jogo!");
return 1;
}
else if(num == 0){
flag2 = 1;
labelVezJogador.setText("");
desabilitaPanels();
JOptionPane.showMessageDialog(null, "Jogador " + labelJogador2.getText() + " venceu o jogo!");
return 1;
}
return 0;
}
public static void Velha(){
panel1.setBackground(Color.red);
panel2.setBackground(Color.red);
panel3.setBackground(Color.red);
panel4.setBackground(Color.red);
panel5.setBackground(Color.red);
panel6.setBackground(Color.red);
panel7.setBackground(Color.red);
panel8.setBackground(Color.red);
panel9.setBackground(Color.red);
}
}
Classe Tabuleiro
public class Tabuleiro {
Jogo jogo = new Jogo();
public Tabuleiro(){
zeraTabuleiro();
}
public void zeraTabuleiro() {
jogo.label1.setText(" ");
jogo.label2.setText(" ");
jogo.label3.setText(" ");
jogo.label4.setText(" ");
jogo.label5.setText(" ");
jogo.label6.setText(" ");
jogo.label7.setText(" ");
jogo.label8.setText(" ");
jogo.label9.setText(" ");
jogo.panel1.setEnabled(true);
jogo.panel2.setEnabled(true);
jogo.panel3.setEnabled(true);
jogo.panel4.setEnabled(true);
jogo.panel5.setEnabled(true);
jogo.panel6.setEnabled(true);
jogo.panel7.setEnabled(true);
jogo.panel8.setEnabled(true);
jogo.panel9.setEnabled(true);
jogo.panel1.setBackground(null);
jogo.panel2.setBackground(null);
jogo.panel3.setBackground(null);
jogo.panel4.setBackground(null);
jogo.panel5.setBackground(null);
jogo.panel6.setBackground(null);
jogo.panel7.setBackground(null);
jogo.panel8.setBackground(null);
jogo.panel9.setBackground(null);
}
public int checaLinhas(){
if(jogo.label1.getText().equals("X") && jogo.label2.getText().equals("X") && jogo.label3.getText().equals("X") ){
return 1;
}
if(jogo.label4.getText().equals("X") && jogo.label5.getText().equals("X") && jogo.label6.getText().equals("X") ){
return 1;
}
if(jogo.label7.getText().equals("X") && jogo.label8.getText().equals("X") && jogo.label9.getText().equals("X") ){
return 1;
}
if(jogo.label1.getText().equals("O") && jogo.label2.getText().equals("O") && jogo.label3.getText().equals("O") ){
return 0;
}
if(jogo.label4.getText().equals("O") && jogo.label5.getText().equals("O") && jogo.label6.getText().equals("O") ){
return 0;
}
if(jogo.label7.getText().equals("O") && jogo.label8.getText().equals("O") && jogo.label9.getText().equals("O") ){
return 0;
}
return 2;
}
public int checaColunas(){
if(jogo.label1.getText().equals("X") && jogo.label4.getText().equals("X") && jogo.label7.getText().equals("X") ){
return 1;
}
if(jogo.label2.getText().equals("X") && jogo.label5.getText().equals("X") && jogo.label8.getText().equals("X") ){
return 1;
}
if(jogo.label3.getText().equals("X") && jogo.label6.getText().equals("X") && jogo.label9.getText().equals("X") ){
return 1;
}
if(jogo.label1.getText().equals("O") && jogo.label4.getText().equals("O") && jogo.label7.getText().equals("O") ){
return 0;
}
if(jogo.label2.getText().equals("O") && jogo.label5.getText().equals("O") && jogo.label8.getText().equals("O") ){
return 0;
}
if(jogo.label3.getText().equals("O") && jogo.label6.getText().equals("O") && jogo.label9.getText().equals("O") ){
return 0;
}
return 2;
}
public int checaDiagonais(){
if(jogo.label1.getText().equals("X") && jogo.label5.getText().equals("X") && jogo.label9.getText().equals("X")){
return 1;
}
if(jogo.label3.getText().equals("X") && jogo.label5.getText().equals("X") && jogo.label7.getText().equals("X")){
return 1;
}
if(jogo.label1.getText().equals("O") && jogo.label5.getText().equals("O") && jogo.label9.getText().equals("O")){
return 0;
}
if(jogo.label3.getText().equals("O") && jogo.label5.getText().equals("O") && jogo.label7.getText().equals("O")){
return 0;
}
return 2;
}
public boolean tabuleiroCompleto(){
if((jogo.label1.getText().equals("X") || jogo.label1.getText().equals("O")) &&
(jogo.label2.getText().equals("X") || jogo.label2.getText().equals("O")) &&
(jogo.label3.getText().equals("X") || jogo.label3.getText().equals("O")) &&
(jogo.label4.getText().equals("X")|| jogo.label4.getText().equals("O")) &&
(jogo.label5.getText().equals("X") || jogo.label5.getText().equals("O")) &&
(jogo.label6.getText().equals("X") || jogo.label6.getText().equals("O")) &&
(jogo.label7.getText().equals("X")|| jogo.label7.getText().equals("O")) &&
(jogo.label8.getText().equals("X")|| jogo.label8.getText().equals("O")) &&
(jogo.label9.getText().equals("X")|| jogo.label9.getText().equals("O"))){
return true;
}
return false;
}
}