Está en la página 1de 8

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