Bom, estou fazendo um jogo da velha, inicialmente só pode ser jogado por 2 players(futuramente pretendo implementar uma AI pro computador). Nesta primeira etapa ele só faz testes na linha e coluna, horizontal e verticalmente.
Porem apesar de todos os testes, não estou conseguindo encontrar o erro, os ifs eram para checar se as linhas estão preenchidas com o mesmo caracter e devolver ao usuario uma mensagem de parabens.
Segue o codigo
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JOptionPane;
public class JogoVelha extends JFrame {
private JButton btProximo,btNovo;
private JCheckBox ln1Col1,ln1Col2,ln1Col3,ln2Col1,ln2Col2,ln2Col3,ln3Col1,ln3Col2,ln3Col3;
private String jogada;
private String [ ] [ ] tabuleiro;
private JLabel lbAnuncio;
private static JogoVelha frame;
private Boolean turno=true,vencedor;
private int i,j;
public JogoVelha (){
inicializarComponentes();
definirEventos();
tabuleiro=new String[3] [3];
}
private void inicializarComponentes(){
System.out.println(turno);
jogada="Vez do jogador X";
//turno=true jogador X, turno = false jogador O
setLayout(null);
setBounds(0,0,250,200);
setTitle("Jogo da Velha do Zamba");
ln1Col1=new JCheckBox();
ln1Col2=new JCheckBox();
ln1Col3=new JCheckBox();
ln2Col1=new JCheckBox();
ln2Col2=new JCheckBox();
ln2Col3=new JCheckBox();
ln3Col1=new JCheckBox();
ln3Col2=new JCheckBox();
ln3Col3=new JCheckBox();
ln1Col1.setBounds(70,30,50,20);
ln1Col2.setBounds(120,30,50,20);
ln1Col3.setBounds(170,30,50,20);
ln2Col1.setBounds(70,50,50,20);
ln2Col2.setBounds(120,50,50,20);
ln2Col3.setBounds(170,50,50,20);
ln3Col1.setBounds(70,70,50,20);
ln3Col2.setBounds(120,70,50,20);
ln3Col3.setBounds(170,70,50,20);
btProximo=new JButton("Proximo jogador");
btProximo.setBounds(20,100,100,30);
btNovo=new JButton("Novo jogo");
btNovo.setBounds(130,100,100,30);
lbAnuncio=new JLabel();
lbAnuncio.setText(jogada);
lbAnuncio.setBounds(20,150,200,30);
add(ln1Col1);
add(ln1Col2);
add(ln1Col3);
add(ln2Col1);
add(ln2Col2);
add(ln2Col3);
add(ln3Col1);
add(ln3Col2);
add(ln3Col3);
add(btProximo);
add(btNovo);
add(lbAnuncio);
}
private void definirEventos(){
ln1Col1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println(turno);
if(turno){
tabuleiro[0][0]="X";
ln1Col1.setLabel("X");
turno=false;
lbAnuncio.setText("Vez do jogador O");
venceu();
} else {
tabuleiro[0][0]="O";
ln1Col1.setLabel("O");
turno=true;
lbAnuncio.setText("Vez do jogador X");
venceu();
}
//ln1Col1.setState(false);
}
});
ln1Col2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(turno){
tabuleiro[0][1]="X";
ln1Col2.setLabel("X");
turno=false;
lbAnuncio.setText("Vez do jogador O");
venceu();
} else {
tabuleiro[0][1]="O";
ln1Col2.setLabel("O");
turno=true;
lbAnuncio.setText("Vez do jogador X");
venceu();
}
//ln1Col2.setState(false);
}
});
ln1Col3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(turno){
tabuleiro[0][2]="X";
ln1Col3.setLabel("X");
turno=false;
lbAnuncio.setText("Vez do jogador O");
venceu();
} else {
tabuleiro[0][2]="O";
ln1Col3.setLabel("O");
turno=true;
lbAnuncio.setText("Vez do jogador X");
venceu();
}
//ln1Col3.setState(false);
}
});
ln2Col1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(turno){
tabuleiro[1][0]="X";
ln2Col1.setLabel("X");
turno=false;
lbAnuncio.setText("Vez do jogador O");
venceu();
} else {
tabuleiro[1][0]="O";
ln2Col1.setLabel("O");
turno=true;
lbAnuncio.setText("Vez do jogador X");
venceu();
}
//ln2Col1.setState(false);
}
});
ln2Col2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(turno){
tabuleiro[1][1]="X";
ln2Col2.setLabel("X");
turno=false;
lbAnuncio.setText("Vez do jogador O");
venceu();
} else {
tabuleiro[1][1]="O";
ln2Col2.setLabel("O");
turno=true;
lbAnuncio.setText("Vez do jogador X");
venceu();
}
//ln2Col2.setState(false);
}
});
ln2Col3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(turno){
tabuleiro[1][2]="X";
ln2Col3.setLabel("X");
turno=false;
lbAnuncio.setText("Vez do jogador O");
venceu();
} else {
tabuleiro[1][2]="O";
ln2Col3.setLabel("O");
turno=true;
lbAnuncio.setText("Vez do jogador X");
venceu();
}
//ln2Col3.setState(false);
}
});
ln3Col1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(turno){
tabuleiro[2][0]="X";
ln3Col1.setLabel("X");
turno=false;
lbAnuncio.setText("Vez do jogador O");
venceu();
} else {
tabuleiro[2][0]="O";
ln3Col1.setLabel("O");
turno=true;
lbAnuncio.setText("Vez do jogador X");
venceu();
}
//ln3Col1.setState(false);
}
});
ln3Col2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(turno){
tabuleiro[2][1]="X";
ln3Col2.setLabel("X");
turno=false;
lbAnuncio.setText("Vez do jogador O");
venceu();
} else {
tabuleiro[2][1]="O";
ln3Col2.setLabel("O");
turno=true;
lbAnuncio.setText("Vez do jogador X");
venceu();
}
//ln3Col2.setState(false);
}
});
ln3Col3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(turno){
tabuleiro[2][2]="X";
System.out.println("testando");
ln3Col3.setLabel("X");
turno=false;
lbAnuncio.setText("Vez do jogador O");
venceu();
} else {
tabuleiro[2][2]="O";
ln3Col3.setLabel("O");
turno=true;
lbAnuncio.setText("Vez do jogador X");
venceu();
}
//ln3Col3.setState(false);
}
});
}
private void venceu(){
vencedor=false;
//verifica se a vencedor na linha
for(i=0;i<3;i++){
for(j=0;j<2;j++){
System.out.println("linha "+i+" coluna "+j+": "+tabuleiro[i][j]+" coluna a frente"+tabuleiro[i][j+1]);
//verifica se todos os caracteres sao iguais na linha
if(tabuleiro[i][j].equals(tabuleiro[i][j+1])||!tabuleiro[i][j].equals(null)||!tabuleiro[i][j+1].equals(null)){
vencedor=true;
}
else{
vencedor=false;
}
}
}
System.out.println("");
System.out.println("");
//verifica se a vencedor na coluna
if(!vencedor){
for(i=0;i<3;i++){
for(j=0;j<2;j++){
System.out.println("linha "+i+" coluna "+j+": "+tabuleiro[j][i]+" coluna a frente"+tabuleiro[j+1][i]);
//verifica se todos os caracteres sao iguais na coluna
if(tabuleiro[j][i].equals(tabuleiro[j+1][i])||!tabuleiro[j][i].equals(null)||!tabuleiro[j+1][i].equals(null)){
vencedor=true;
}
else{
vencedor=false;
}
}
}
}
if(vencedor){
lbAnuncio.setText("Parabens");
}
}
public static void main(String [] args){
SwingUtilities.invokeLater(new Runnable(){
public void run(){
frame=new JogoVelha();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension tela=Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation((tela.width-frame.getSize().height)/2,(tela.height-frame.getSize().height)/2);
frame.setVisible(true);
}
});
}
}

