1
I am finishing an old game, and I would like when someone wins the game, a line was drawn on the line, column or diagonal, in which the game was completed. I’ll post my code below:
This is the game class, where it defines the Labels, Buttons, Panels, etc.
It also makes all game decisions, setting X or O on a particular Label
When the player such click on it
All board checks, if any player has won, if he is complete, are done
Tray I’m gonna 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;
}
}
Man, I don’t understand where you want me to put the code above.
– Vinicios Aguiar