Jogo da memória

4 respostas
L

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;
			
		}
		

	
	}
	
}

4 Respostas

ViniGodoy

Olá, por favor, não poste títulos de tópicos usando só letras maiúsculas e palavras como “URGENTE!”

Outra coisa, não entendi direito sua dúvida.

L

Ok. A questão é que a imagem padrão não aparece. Ao iniciar o jogo as imagens embaralhadas já aparecem. Esse é o meu problema.

L

O que eu quero saber é como de uma imagem padrão ao clicarmos a imagem é virada.

Anime

Oi larissasistem,

Não sei se entendi,mas se for o que estou pensando,você pode usar setVisible()…

Criado 8 de dezembro de 2010
Ultima resposta 9 de dez. de 2010
Respostas 4
Participantes 3