Pessoal, gostaria de uma pequena ajuda para solucionar um problema que não estou conseguindo localizar o erro.
O Prof de Linguagem de Programação solicitou que fizessemos um jogo da velha, o código está todo construído e rodando legal, porém não encontro uma forma de fazer com que o jogo termine após a vitória de algum marcador.
No caso após concluir o jogo o usuário deve clicar em novo jogo para recomeçar, porém mesmo após alguém vencer o tabuleiro continua aceitando jogadas, e aí que não sei onde dar o comando de parada.
Segue o código:
GerenciaJogo
public class GerenciaJogo {
char[][] tabuleiro;
boolean fim = false;
String mensagemDeFim;
GerenciaJogo(){
tabuleiro = new char[3][3];
}
String getMensagemDeFim(){
return mensagemDeFim;
}
boolean getFimDeJogo(){
return fim;
}
// m�todo onde deve ser realizada a implementa��o
//do c�digo do aluno
void setJogada(int j, int i, char v){
tabuleiro[j][i] = v;
fim = false;
char vencedor = 'a';
// Verifica��o da Linha
for (int l = 0; l <= 2; l++)
{
if ((tabuleiro[l][0] == tabuleiro[l][1]) && (tabuleiro[l][1] == tabuleiro[l][2]))
vencedor = tabuleiro[l][0];
}
for (int c = 0; c <= 2; c++)
{
if ((tabuleiro[0][c] == tabuleiro[1][c]) && (tabuleiro[1][c] == tabuleiro[2][c]))
vencedor = tabuleiro[0][c];
}
// Verifica��o da Primeira Dagonal
if ((tabuleiro[0][0] == tabuleiro[1][1]) && (tabuleiro[1][1] == tabuleiro[2][2]))
vencedor = tabuleiro[0][0];
// Verifica��o da Segunda Diagonal
if ((tabuleiro[0][2] == tabuleiro[1][1]) && (tabuleiro[1][1] == tabuleiro[2][0]))
vencedor = tabuleiro[1][1];
if (vencedor !='a' && vencedor != '-')
{
fim = true;
mensagemDeFim = ("O Vencedor foi: "+ vencedor);
}
}
char[][] getTabuleiro(){
return tabuleiro;
}
}[/code]
[b]JogodaVelhaGui[/b]
[code]import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JogoDaVelhaGUI {
private static JButton botaoNovo;
private static JLabel statusLabel;
private static char jogador;
private static DesenhoTabuleiro tabuleiro;
private static JFrame window;
private static GerenciaJogo gerenciaJogo;
private static void createAndShowGUI() {
//JFrame.setDefaultLookAndFeelDecorated(true);
window = new JFrame("Jogo da Velha!");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setBounds(300, 100, 310, 380);
Container contentPane = window.getContentPane();
//Set up the content pane and components in GridLayout
addComponentsToPane(contentPane);
//window.pack();
window.setVisible(true);
window.setResizable(false);
}
private static void addComponentsToPane(Container contentPane) {
jogador = 'o';
tabuleiro = new DesenhoTabuleiro();
JPanel painelDesenho = new JPanel();
painelDesenho.setLayout(new BoxLayout( painelDesenho, BoxLayout.Y_AXIS) );
painelDesenho.add(tabuleiro);
gerenciaJogo = new GerenciaJogo();
tabuleiro.setConfiugracao(gerenciaJogo.getTabuleiro());
tabuleiro.limpaTabuleiro();
statusLabel = new JLabel("Jogador - "+jogador+" - inicia o jogo!");
JPanel painelInferior = new JPanel();
painelInferior.setLayout(new GridLayout(0,1));
botaoNovo = new JButton("Novo Jogo");
botaoNovo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
statusLabel.setText("Jogador - "+jogador+" - inicia o jogo!");
tabuleiro.limpaTabuleiro();
tabuleiro.repaint();
}
});
//Define MouseListener
MouseListener mouseListener = new MouseAdapter() {
public void mouseClicked (MouseEvent e) {
int posI = e.getX()/DesenhoTabuleiro.casaLargura;
int posJ = e.getY()/DesenhoTabuleiro.casaLargura;
statusLabel.setText("Mouse clicked ("+e.getX()+", "+ e.getY()+") = tabuleiro["+posI+"]["+posJ+"]");
gerenciaJogo.setJogada(posJ, posI, jogador);
tabuleiro.repaint();
trocaJogador();
statusLabel.setText("Jogador - "+jogador+" - faça sua jogada!");
if (gerenciaJogo.getFimDeJogo()) {
statusLabel.setText(gerenciaJogo.getMensagemDeFim());
}
}
};
tabuleiro.addMouseListener(mouseListener);
painelInferior.add(botaoNovo);
painelInferior.add(statusLabel);
contentPane.add(painelDesenho,BorderLayout.CENTER);
contentPane.add(painelInferior,BorderLayout.PAGE_END);
}
static void trocaJogador(){
if (jogador == 'x')
jogador = 'o';
else
jogador = 'x';
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
createAndShowGUI();
}
};
Alguém pode me informar onde devo modificar?
obrigado.