0% encontró este documento útil (0 votos)
125 vistas8 páginas

Juego de Memoria en Java Swing

Este documento describe una clase Java que implementa un juego de memoria con 12 imágenes. La clase contiene arreglos que almacenan los números asignados a cada imagen, el estado de las parejas encontradas, y el número de clics por imagen. También lleva un conteo del puntaje. Al iniciar, la clase genera números aleatorios para cada imagen, inicializa las interfaces y asigna las imágenes de inicio.

Cargado por

jessica
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
125 vistas8 páginas

Juego de Memoria en Java Swing

Este documento describe una clase Java que implementa un juego de memoria con 12 imágenes. La clase contiene arreglos que almacenan los números asignados a cada imagen, el estado de las parejas encontradas, y el número de clics por imagen. También lleva un conteo del puntaje. Al iniciar, la clase genera números aleatorios para cada imagen, inicializa las interfaces y asigna las imágenes de inicio.

Cargado por

jessica
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

package ventanaprincipal;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;

public class VentanaPrincipal extends javax.swing.JFrame implements MouseListener{

private JLabel etiImagen1 = new JLabel();


private JLabel etiImagen10 = new JLabel();
private JLabel etiImagen11 = new JLabel();
private JLabel etiImagen12 = new JLabel();
private JLabel etiImagen2 = new JLabel();
private JLabel etiImagen3 = new JLabel();
private JLabel etiImagen4 = new JLabel();
private JLabel etiImagen5 = new JLabel();
private JLabel etiImagen6 = new JLabel();
private JLabel etiImagen7 = new JLabel();
private JLabel etiImagen8 = new JLabel();
private JLabel etiImagen9 = new JLabel();
private JLabel etiquetaAbajo = new JLabel();
private JLabel etiquetaTitulo = new JLabel();
private JLabel lblPuntaje = new JLabel();
private JLabel lblPuntos = new JLabel();
private JPanel panelCentral = new JPanel();
private JPanel panelImagenes = new JPanel();
private JPanel panelInferior = new JPanel();
private JPanel panelInfo = new JPanel();
private JPanel panelSuperior = new JPanel();
private JButton botonInicia = new JButton();

int ArrNumIma[]=new int[12];//Arreglo que contendr� el numero correspondiente


al nombre de las imagenes
JLabel ArrLabImag[]=new JLabel[12];//Arreglo con los componentes JLabel donde
se pintan las imagenes
int arregloControlRepeticiones[]=new int[6];//Arreglo que evitar� que un numero
se repita mas de 2 veces
int arregloControlParejas[]=new int[12];//Arreglo que permitir� llevar el
control de las parejas encontradas
int arregloCantClic[]=new int[12];//Arreglo que permitir� controlar los eventos
producidos cada que se de clic en una imagen

int clic=0;//Variable que determinar� cuantos clic se han dado antes de validar
las parejas
int vista1,vista2;//variables que indicar�n cuales son las imagenes que se han
mostrado
int puntaje=0;//Variable que permitir� llevar un conteo de los puntos
public VentanaPrincipal() {

initComponents();
inicializarArreglos();
setSize(574, 517);
setResizable(false);
setLocationRelativeTo(null);

private void initComponents() {

etiquetaTitulo = new JLabel();


etiquetaTitulo.setFont(new java.awt.Font("Tahoma", 0, 35)); // NOI18N
etiquetaTitulo.setText("CONCENTRESE!!!");
etiquetaTitulo.addMouseListener(this);
etiquetaTitulo.setVisible(true);

etiquetaAbajo = new JLabel();


etiquetaAbajo.setFont(new java.awt.Font("Chiller", 0, 22));
etiquetaAbajo.setText("http://codejavu.blogspot.com/");

botonInicia=new JButton();
botonInicia.setFont(new java.awt.Font("Tahoma", 0, 36)); // NOI18N
botonInicia.setText("Reinicia");
botonInicia.setBounds(10, 310, 230, 80);
botonInicia.addMouseListener(this);

lblPuntaje = new JLabel();


lblPuntaje.setFont(new java.awt.Font("Tahoma", 0, 48)); // NOI18N
lblPuntaje.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
lblPuntaje.setText("Puntaje");
lblPuntaje.setBounds(50, 0, 170, 120);

lblPuntos = new JLabel();


lblPuntos.setFont(new java.awt.Font("Tahoma", 0, 120)); // NOI18N
lblPuntos.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
lblPuntos.setText("0");

lblPuntos.setBounds(40, 120, 170, 130);

etiImagen1 = new JLabel();


etiImagen1.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/quien.jpg"))); // NOI18N
etiImagen1.setBounds(5, 0, 100, 100);

etiImagen2 = new JLabel();


etiImagen2.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/quien.jpg"))); // NOI18N
etiImagen2.setBounds(113, 0, 100, 100);

etiImagen3 = new JLabel();


etiImagen3.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/quien.jpg"))); // NOI18N
etiImagen3.setBounds(220, 0, 100, 100);
etiImagen4 = new JLabel();
etiImagen4.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/quien.jpg"))); // NOI18N
etiImagen4.setBounds(5, 100, 100, 100);

etiImagen5 = new JLabel();


etiImagen5.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/quien.jpg"))); // NOI18N
etiImagen5.setBounds(113, 100, 100, 100);

etiImagen6 = new JLabel();


etiImagen6.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/quien.jpg"))); // NOI18N
etiImagen6.setBounds(220, 100, 100, 100);

etiImagen7 = new JLabel();


etiImagen7.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/quien.jpg"))); // NOI18N
etiImagen7.setBounds(5, 200, 100, 100);

etiImagen8 = new JLabel();


etiImagen8.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/quien.jpg"))); // NOI18N
etiImagen8.setBounds(113, 200, 100, 100);

etiImagen9 = new JLabel();


etiImagen9.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/quien.jpg"))); // NOI18N
etiImagen9.setBounds(220, 200, 100, 100);

etiImagen10 = new JLabel();


etiImagen10.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/quien.jpg"))); // NOI18N
etiImagen10.setBounds(5, 300, 100, 100);

etiImagen11 = new JLabel();


etiImagen11.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/quien.jpg"))); // NOI18N
etiImagen11.setBounds(113, 300, 100, 100);

etiImagen12 = new JLabel();


etiImagen12.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/imagenes/quien.jpg"))); // NOI18N
etiImagen12.setBounds(220, 300, 100, 100);

panelImagenes = new JPanel();


panelImagenes.setBackground(new java.awt.Color(255, 204, 0));
panelImagenes.setLayout(null);
panelImagenes.setBounds(0, 0, 320, 465);
panelImagenes.add(etiImagen1);
panelImagenes.add(etiImagen2);
panelImagenes.add(etiImagen3);
panelImagenes.add(etiImagen4);
panelImagenes.add(etiImagen5);
panelImagenes.add(etiImagen6);
panelImagenes.add(etiImagen7);
panelImagenes.add(etiImagen8);
panelImagenes.add(etiImagen9);
panelImagenes.add(etiImagen10);
panelImagenes.add(etiImagen11);
panelImagenes.add(etiImagen12);

panelSuperior = new JPanel();


panelSuperior.setBackground(new java.awt.Color(204, 204, 0));
panelSuperior.add(etiquetaTitulo);

panelInfo = new JPanel();


panelInfo.setBackground(new java.awt.Color(102, 153, 0));
panelInfo.setLayout(null);
panelInfo.setBounds(320, 0, 260, 420);
panelInfo.add(botonInicia);
panelInfo.add(lblPuntaje);
panelInfo.add(lblPuntos);

panelCentral = new JPanel();


panelCentral.setBackground(new java.awt.Color(102, 102, 0));
panelCentral.setLayout(null);
panelCentral.add(panelImagenes);
panelCentral.add(panelInfo);

panelInferior = new JPanel();


panelInferior.setBackground(new java.awt.Color(204, 204, 0));
FlowLayout miLayout=new FlowLayout(FlowLayout.RIGHT);
panelInferior.setLayout(miLayout);
panelInferior.add(etiquetaAbajo);

add(panelCentral, java.awt.BorderLayout.CENTER);
add(panelInferior, java.awt.BorderLayout.PAGE_END);
add(panelSuperior, java.awt.BorderLayout.PAGE_START);

pack();
}
//===========================================================================
===========================//
// Logica
del juego
//===========================================================================
===========================//

/**
* Permite inicializar todos los arreglos utilizados
*/
private void inicializarArreglos() {

inicializaArregloImagenes();

//inicializa los arreglos en cero


llenaArreglosConCeros(arregloControlRepeticiones);
llenaArreglosConCeros(ArrNumIma);
llenaArreglosConCeros(arregloControlParejas);
llenaArreglosConCeros(arregloCantClic);

Random r=new Random();//permite la generacion de numeros


aleatorios
int posicionImagen;
for (int i = 0; i < 12; i++) {
posicionImagen=r.nextInt(6);//la posicionImagen tendra un
valor aleatorio entre 0 y 5, es decir, 6 valores posibles
/*Se valida que el numero aleatorio solo se repita 2 veces*/
if(arregloControlRepeticiones[posicionImagen]<2){
ArrNumIma[i]=posicionImagen+1;//almacena el valor que
representa cada imagen (la imagen se llama con su numero), se suma 1 porq si el
numero es 0 entonces queda en 1
System.out.print(ArrNumIma[i]+" , ");
arregloControlRepeticiones[posicionImagen]++;//si se
almacena el numero entonces se aumenta el valor para que sepamos que ya existe 1
vez
}else{
i--;//en caso de que el numero se repita entonces se devuelve
una iteraci�n para que pueda continuar pidiendo numeros
}
}

/**
*Metodo que permite inicializar el arreglo de JLabels con los objetos
labels de las imagenes
*y asignarle a cada uno la imagen inicial de incognita
*/
private void inicializaArregloImagenes() {
ArrLabImag[0]=etiImagen1; ArrLabImag[1]=etiImagen2;
ArrLabImag[2]=etiImagen3;
ArrLabImag[3]=etiImagen4; ArrLabImag[4]=etiImagen5;
ArrLabImag[5]=etiImagen6;
ArrLabImag[6]=etiImagen7; ArrLabImag[7]=etiImagen8;
ArrLabImag[8]=etiImagen9;
ArrLabImag[9]=etiImagen10; ArrLabImag[10]=etiImagen11;
ArrLabImag[11]=etiImagen12;

for (int i = 0; i < 12; i++) {


ArrLabImag[i].setIcon(new
ImageIcon(getClass().getResource("/imagenes/quien.jpg")));
ArrLabImag[i].addMouseListener(this);
}
}

private void llenaArreglosConCeros(int[] arreglo) {


for (int i = 0; i < arreglo.length; i++) {
arreglo[i]=0;
}
}

private void validaParejas(int vista1, int vista2, int i) {


/*valida si el valor en la posicion obtenida l encontrar la imagen 1 es
igual al valor
* en la posicion obtenida al encontrar la imagen 2*/
if (ArrNumIma[vista1]==ArrNumIma[vista2]) {
//si esto se cumple se suman 10 puntos y se asigna un 1 para
determinar que en esas posiciones ya se encontraron parejas
puntaje+=10;
lblPuntos.setText(puntaje+"");
arregloControlParejas[vista1]=1;
arregloControlParejas[vista2]=1;
}else{
/*si no son iguales entonces se vuelve a poner la imagen de
incognita y se reinicia
* el valor de la posicion en el arreglo que cuenta cuantos clic
se han dado en cada label*/
ArrLabImag[vista1].setIcon(new
ImageIcon(getClass().getResource("/imagenes/quien.jpg")));
ArrLabImag[vista2].setIcon(new
ImageIcon(getClass().getResource("/imagenes/quien.jpg")));
arregloCantClic[vista1]=0;
arregloCantClic[vista2]=0;
}
}

//===========================================================================
===========================//
//Eventos del Mouse
//===========================================================================
===========================//

@Override
public void mouseClicked(MouseEvent e) {
/*Logica para el evento del bot�n iniciar*/
if (e.getSource()==botonInicia) {
inicializarArreglos();
clic=0;
puntaje=0;
lblPuntos.setText("0");
}

/*Ciclo que permite recorrer todos los JLabel del arreglo y determinar
cuando uno fue presionado*/
for (int i = 0; i < 12; i++) {
/*Con esta validacion nos damos cuenta de cual label se presion�
y validamos que
*si es un label que ya esta descubierto porque su pareja fue
encontrada, entonces no
*lo tenga en cuenta para validar mas parejas, pues esta ya fue
encontrada */
if (e.getSource()==ArrLabImag[i] &&
verificaParejasEncontradas(i)) {
arregloCantClic[i]++;//si se presiona 2 veces seguidas un
label, se incrementa la posicion del arreglo
/*se valida que el mismo label no se presionara mas de dos
veces seguidas, si esto es as�
* el sistema espera hasta que se presione otro label para
poder validar parejas*/
if (arregloCantClic[i]<2) {
/*si lleva menos de 2 clic en un mismo label entonces
se muestra la imagen*/
clic++;
ArrLabImag[i].setIcon(new
ImageIcon(getClass().getResource("/imagenes/"+ArrNumIma[i]+".jpg")));
if (clic==1) {
vista1=i;//si se lleva 1 clic se almacena en
una variable la posicion de la imagen para luego ser comparada con la posicion de
la segunda
}else{
vista2=i;//si se llevan 2 clic se almacena en
una variable la posicion de la segunda imagen para luego compararla con la primera
}
}
}

}
}

/**
* El arregloControlParejas almacena 0 o 1, 0 indica que no hay parejas
encontradas a�n para esa posicion, 1 indica que en esa posicion
* ya se encuentr� pareja, se habla de posiciones ya que en estas es donde se
encuentran las imagenes.
* @param i
* @return
*/
private boolean verificaParejasEncontradas(int i) {

if (arregloControlParejas[i]!=1) {
return true;
}else{
return false;
}
}

@Override
public void mouseExited(MouseEvent e) {
/*Cuando se ejecuta este evento se permite realizar la validacion de
parejas, solo cuando ya se han descubierto 2*/
for (int i = 0; i < 12; i++) {
if (e.getSource()==ArrLabImag[i]) {
if (clic==2) {
validaParejas(vista1,vista2,i);
clic=0;
}
}
}
}

@Override
public void mouseEntered(MouseEvent arg0) { }

@Override
public void mousePressed(MouseEvent arg0) { }

@Override
public void mouseReleased(MouseEvent arg0) { }
}

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package ventanaprincipal;
/**
*
* @author rober
*/
public class Aplicacion {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
VentanaPrincipal miVentana=new VentanaPrincipal();
miVentana.setVisible(true);
}

También podría gustarte