Pessoal, estou enloquecendo. Tenho um código em java de um jogo da memória que ao clicar no iniciar já revela as peças que deveriam ser viradas, ou seja, a imagem padrão na qual você deve clicar para que a imagem duplicada possa ser encontrada não aparece. Por favor me ajudem !
Ps: Ele consegue dispor as peças aleatóriamente.
Obrigada.
Código:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Random;
import javax.swing.Box;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class GerenciadorDeJanelas {
JFrame janelaMenu, janelaTabuleiro;
JPanel painelBotoes, painelMenu, painelTabuleiro, painelInformacoes, painelTabuleiroJogo, painelBotoesJogo;
JButton btnJogar, btnRanking, btnInstrucoes, btnMenu,btnSair, btnNovo, btnIniciar ;
JLabel lblImagem, lblNome, lblTentativas;
JTextField txtNome;
JButton[][] pecasFacil = new JButton[2][2];
int tentativas = 0;
ImageIcon imagemPadrao = new ImageIcon("logotipo.jpg");
ImageIcon padrao = new ImageIcon("padrao.png");
ImageIcon icone = new ImageIcon("icone1.png");
int primeiroX = -1;
int primeiroY = -1;
int certas = 0;
String comparar = null;
String comparar2 = null;
public void montarPainelBotoes(){
painelBotoes = new JPanel(new GridLayout(1,0));
painelBotoes.setBackground( Color.white);
btnJogar = new JButton("JOGAR");
btnJogar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(e.getSource() == btnJogar){
montarJanelaTabuleiro();
inserir();
}
}
});
btnRanking = new JButton("RANKING");
btnRanking.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(e.getSource() == btnRanking){
listar();
}
}
});
lblNome = new JLabel("Digite seu nome: ");
txtNome = new JTextField(20);
Box bNome = Box.createHorizontalBox();
bNome.add(lblNome);
Box.createHorizontalStrut(10);
bNome.add(txtNome);
painelBotoes.add(bNome);
painelBotoes.add(btnJogar);
painelBotoes.add(btnRanking);
}
private void montarPainelPrincipal(){
painelMenu = new JPanel(new BorderLayout());
painelMenu.setBackground( Color.white);
montarPainelBotoes();
ImageIcon imagemPrincipal = new ImageIcon("logotipo.jpg");
lblImagem = new JLabel(imagemPrincipal);
painelMenu.add(painelBotoes, BorderLayout.NORTH);
painelMenu.add(lblImagem, BorderLayout.CENTER);
janelaMenu = new JFrame();
janelaMenu.add(painelMenu);
janelaMenu.setSize(600,400);
janelaMenu.setTitle("JOGO DA MEMÓRIA 0.1");
janelaMenu.setIconImage(new ImageIcon ("icone1.png").getImage());
janelaMenu.setVisible(true);
janelaMenu.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
janelaMenu.setLocationRelativeTo( null );
}
public void montarJanela(){
montarPainelPrincipal();
}
public void montarTabuleiro(){
painelTabuleiro = new JPanel(new GridLayout (2,2));
String vetorImagem[] = new String [2];
vetorImagem[0] = "img1.png";
vetorImagem[1] = "img2.png";
for(int i=0; i<pecasFacil.length; i++){
for(int j=0;j<pecasFacil[i].length; j++){
pecasFacil[i][j] = new JButton(padrao);
pecasFacil[i][j].setBackground(Color.WHITE);
painelTabuleiro.add(pecasFacil[i][j]);
pecasFacil[i][j].setBorderPainted(true);
}
}
}
public int tentativas(){
return tentativas;
}
public void montarPainelTabuleiro(){
painelInformacoes = new JPanel(new GridLayout(1,0));
lblNome = new JLabel("<html><body><h3><red>Jogador: "+txtNome.getText());
//lblNome.setForeground(Color.red);
lblTentativas = new JLabel("<html><body><h3>Tentativas:"+tentativas());
Box bTentativas = Box.createHorizontalBox();
bTentativas.add(lblNome);
Box.createHorizontalStrut(10);
bTentativas.add(lblTentativas);
painelInformacoes.add(bTentativas);
montarTabuleiro();
}
public void montarPainelBotoesJogo(){
painelBotoesJogo = new JPanel(new GridLayout(1,0));
btnIniciar = new JButton("INICIAR");
btnIniciar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(e.getSource() == btnIniciar){
gerarPecas();
}
}
});
btnInstrucoes = new JButton("INSTRUÇÕES");
btnInstrucoes.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(e.getSource() == btnInstrucoes){
JOptionPane.showMessageDialog(null,
"Clique sobre os ?quadrados? e tente achar o par correspondente do ?quadrado? que você clicou.\n Faça isso até que todos os ?quadrados? tenham sido abertos.\n Prove que você tem uma boa memória, erre o menos possível.\n Clique no iniciar eb boa sorte !\n"
);
}
}
});
btnMenu = new JButton("MENU");
btnMenu.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(e.getSource() == btnMenu){
montarJanela();
janelaTabuleiro.setVisible(false);
}
}
});
btnSair = new JButton("SAIR");
btnSair.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(e.getSource() == btnSair){
System.exit(0);
}
}
});
btnNovo = new JButton("NOVO");
painelBotoesJogo.add(btnIniciar);
painelBotoesJogo.add(btnInstrucoes);
painelBotoesJogo.add(btnNovo);
painelBotoesJogo.add(btnMenu);
painelBotoesJogo.add(btnSair);
}
public void montarPainelTabuleiroJogo(){
painelTabuleiroJogo = new JPanel(new BorderLayout());
montarTabuleiro();
montarPainelTabuleiro();
montarPainelBotoesJogo();
painelTabuleiroJogo.add(painelInformacoes,BorderLayout.NORTH);
painelTabuleiroJogo.add(painelTabuleiro, BorderLayout.CENTER);
painelTabuleiroJogo.add(painelBotoesJogo, BorderLayout.SOUTH);
janelaTabuleiro = new JFrame();
janelaTabuleiro.setSize(690,690);
janelaTabuleiro.setTitle("JOGANDO");
janelaTabuleiro.setIconImage(new ImageIcon ("icone1.png").getImage());
janelaTabuleiro.add(painelTabuleiroJogo);
janelaTabuleiro.setVisible(true);
janelaTabuleiro.setResizable(false);
janelaTabuleiro.setLocationRelativeTo( null );
}
public void montarJanelaTabuleiro(){
montarPainelTabuleiroJogo();
}
public void inserir(){
Connection con;
String nome = txtNome.getText();
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:JogoMemoria");
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException("ERRO AO SE CONECTAR !");
}
try{
PreparedStatement includepstmt = con.prepareStatement("INSERT INTO JOGADOR VALUES(?)");
includepstmt.setString(1, nome);
includepstmt.executeUpdate();
}catch(SQLException e){
throw new RuntimeException("ERRO NA INSERÇÃO DE VALORES");
}JOptionPane.showMessageDialog(null, "Você já está habilitado a jogar !");
}
private void listar() {
Connection con;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:JogoMemoria");
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException("ERRO AO SE CONECTAR !");
}
String query = "SELECT * FROM JOGADOR";
try{
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while(rs.next()){
JOptionPane.showMessageDialog(null, ("Jogadores Tentativas\n"+"\t"+rs.getString("NOME")));
}
}catch(SQLException e){
throw new RuntimeException("ERRO NA SELEÇÃO");
}
try{
con.close();
}catch (Exception e){
e.printStackTrace();
}
}
public void pecasImagemPadrao(){
for(int x=0; x<pecasFacil.length; x++){
for(int y=0;y<pecasFacil[x].length; y++){
pecasFacil[x][y].setIcon(padrao);
}
}
}
public void gerarPecas(){
String vetorImagem[] = new String [2];
vetorImagem[0] = "img1.png";
vetorImagem[1] = "img2.png";
int usada[] = new int [2];
for(int x=0; x<pecasFacil.length; x++){
for(int y=0;y<pecasFacil[x].length; y++){
class Ouv implements ActionListener{
public void actionPerformed(ActionEvent e){
for(int i=0; i<pecasFacil.length; i++){
for(int j=0;j<pecasFacil[i].length; j++){
if(e.getSource() == pecasFacil[i][j]){
if (primeiroX == -1 && primeiroY == -1) {
primeiroX = i;
primeiroY = j;
} else {
compararImagens(i, j, primeiroX, primeiroY);
primeiroX = -1;
primeiroY = -1;
}
}
}
}
}
}
Ouv o = new Ouv();
Random rnd = new Random();
int img = 0;
boolean imagemusada = true;
ImageIcon imagem = null;
while (imagemusada) {
img = rnd.nextInt(2);
if (usada[img] < 2) {
String sImg = vetorImagem[img];
imagem = new ImageIcon(sImg);
imagemusada = false;
usada[img]++;
} else {
imagemusada = true;
}
}
pecasFacil[x][y].setIcon(padrao);
pecasFacil[x][y].setBackground(Color.WHITE);
pecasFacil[x][y].setIcon(imagem);
pecasFacil[x][y].addActionListener(o);
painelTabuleiro.add(pecasFacil[x][y]);
pecasFacil[x][y].setBorderPainted(true);
}
}
}
public void compararImagens(int x1, int y1, int x2, int y2){
comparar = pecasFacil[x1][y1].toString();
comparar2 = pecasFacil[x2][y2].toString();
lblTentativas.setText("<html><body><h3>Tentativas:"+tentativas);
if(comparar.equals(comparar2)){
JOptionPane.showMessageDialog( null, "Você não pode fazer isso !","ERRO !", JOptionPane.ERROR_MESSAGE );
lblTentativas.getText();
}else{
if (pecasFacil[x1][y1].getIcon().toString().equalsIgnoreCase(pecasFacil[x2][y2].getIcon().toString())) {
pecasFacil[x1][y1].setIcon(padrao);
pecasFacil[x2][y2].setIcon(padrao);
pecasFacil[x1][y1].setEnabled(false);
pecasFacil[x2][y2].setEnabled(false);
tentativas++;
certas++;
JOptionPane.showMessageDialog(null, "Você acertou! Parabéns !" ,"PEÇAS CORRETAS",JOptionPane.WARNING_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "Você errou. Tente novamente !" ,"PEÇAS ERRADAS",JOptionPane.WARNING_MESSAGE);
tentativas++;
}
lblTentativas.setText("<html><body><h3>Tentativas:"+tentativas);
}
if(certas == 2){
JOptionPane.showMessageDialog(null, "Todas as peças foram achadas ! Parabéns !","JOGO FINALIZADO",JOptionPane.PLAIN_MESSAGE);
janelaTabuleiro.setVisible(false);
tentativas = 0;
}
}
}