28
Memorama ------------------------------------------------------------- ----------------------------------------------- CODIGO DEL TABLERO SWING ------------------------------------------------------------- ----------------------------------------------- import java.awt.*; import java.awt.event.*;JOptionPane.showMessageDialog(null, "Eres el jugador 2!!", "Memorama en Java", JOptionPane.PLAIN_MESSAGE); import javax.swing.*; import javax.swing.JOptionPane; import java.util.*; public class Memorama extends Frame implements MouseListener, MouseMotionListener { private int tablero[][] = {{0, 0, 0, 0},//Tablero del Juego se declara la matriz de 4 * 4 donde se colocaran las cartas en una forma aleatoria formando 8 parejas. {0, 0, 0, 0},//REPRESENTAMOS LOS ELEMENTOS DE LA MATRIZ CON UN 0 AL INICIO DEL JUEGO YA QUE AL INICIO TODAS LAS CARTAS SE ENCUANTRAN {0, 0, 0, 0},//OCULTAS. {0, 0, 0, 0}}; private boolean arriba[][]; //private boolean bocaArriba[][]; private final int CX = 100;//CX y CY establecen el centro geom�trico de las gr�ficas private final int CY = 100; private int NE = 0;//para contar el numero de clic que da

Memorama Java

Embed Size (px)

DESCRIPTION

Logica

Citation preview

Page 1: Memorama Java

Memorama

------------------------------------------------------------------------------------------------------------CODIGO DEL TABLERO SWING------------------------------------------------------------------------------------------------------------

import java.awt.*;import java.awt.event.*;JOptionPane.showMessageDialog(null, "Eres el jugador 2!!", "Memorama en Java", JOptionPane.PLAIN_MESSAGE);           import javax.swing.*;import javax.swing.JOptionPane;import java.util.*;public class Memorama extends Frame implements MouseListener, MouseMotionListener {     private int tablero[][] =   {{0, 0, 0, 0},//Tablero del Juego se declara la matriz de 4 * 4 donde se colocaran las cartas en una forma aleatoria formando 8 parejas.                                {0, 0, 0, 0},//REPRESENTAMOS LOS ELEMENTOS DE LA MATRIZ CON UN 0 AL INICIO DEL JUEGO YA QUE AL INICIO TODAS LAS CARTAS SE ENCUANTRAN                                {0, 0, 0, 0},//OCULTAS.                                {0, 0, 0, 0}};          private boolean arriba[][]; //private boolean bocaArriba[][];

       private final int CX = 100;//CX y CY establecen el centro geom�trico de las gr�ficas    private final int CY = 100;

    private int NE = 0;//para contar el numero de clic que da el jugador y el numero de errores    private int NC = 0;    private int k;    private int l;

       private int Arriba = 0;//para saber que cartas se encuentran boca arriba     private int carta1 = 0;    private int carta2 = 0;       private final int EX = 100;//EX y EY establecen el tama�o de las gr�ficas

Page 2: Memorama Java

    private final int EY = 100;

       private int mcy, mcx;//Variables con las cuales sabemos la posicion y movimiento del mouse    private int mmx, mmy;

       private Random r = new Random();//declaramos la variable r que almacenara el valor del random

       public ImageIcon imagenFondo;//declamamos los objetos donde se cargaran la imagenes    public ImageIcon imagenOculta;    public ImageIcon imagen1;    public ImageIcon imagen2;    public ImageIcon imagen3;    public ImageIcon imagen4;    public ImageIcon imagen5;    public ImageIcon imagen6;    public ImageIcon imagen7;    public ImageIcon imagen8;    public String nombre;       public int o;//la variable o y p guardan temporalmente las posiciones de la segunda carta al momento de ser volteada    public int p;       public int parejas;//lleva el control de las parejas encontradas

    public Memorama() {

        int i, j, k, l;        addMouseListener(this);  //Escuchamos eventos de raton        addMouseMotionListener(this); // y de movimientos de raton        setSize(1024, 768);//**********************

        arriba = new boolean[4][4];        for (i = 0; i < 4; i++) {            for (j = 0; j < 4; j++) {                arriba[i][j] = false;            }        }        for (k = 1; k <= 8; k++) {//Coloca las cartas en forma aleatoria, realiza este proceso hasta llenar la matriz            for (l = 1; l <= 2; l++) {//asi se forman las parejas colocando cada una 2 veces pero en diferente posicion

Page 3: Memorama Java

                do {                    i = r.nextInt(4);                    j = r.nextInt(4);                } while (tablero[i][j] != 0);                tablero[i][j] = k;            }        }        imagenOculta = new ImageIcon(getClass().getResource("oculta2.png"));//cargamos la imagenes        imagenFondo = new ImageIcon(getClass().getResource("fondo.png"));        imagen1 = new ImageIcon(getClass().getResource("1.jpg"));        imagen2 = new ImageIcon(getClass().getResource("2.jpg"));        imagen3 = new ImageIcon(getClass().getResource("3.jpg"));        imagen4 = new ImageIcon(getClass().getResource("4.jpg"));        imagen5 = new ImageIcon(getClass().getResource("5.jpg"));        imagen6 = new ImageIcon(getClass().getResource("6.jpg"));        imagen7 = new ImageIcon(getClass().getResource("7.jpg"));        imagen8 = new ImageIcon(getClass().getResource("8.jpg"));        setUndecorated(true);        setResizable(false);        setBackground(new Color(130, 158, 16));//Parte del Constructor        setTitle(" MEMORAMA ");               Dimension Pantalla = Toolkit.getDefaultToolkit().getScreenSize();//para centrar en la pantalla        Dimension frame = this.getSize();        setLocation((Pantalla.width / 2 - (frame.width / 2)), Pantalla.height / 2 - (frame.height / 2));        setVisible(true);//Termina el Constructor    }

    public void dibCuadro(Graphics g, int px, int py, int v) {        switch (v) {            case 0:                g.drawImage(imagenOculta.getImage(), px, py, 98, 98, null);                break;            case 1:                g.drawImage(imagen1.getImage(), px + 4, py + 4, 90, 90, null);                break;            case 2:                g.drawImage(imagen2.getImage(), px + 4, py + 4, 90, 90, null);                break;            case 3:                g.drawImage(imagen3.getImage(), px + 4, py + 4, 90, 90, null);                break;            case 4:                g.drawImage(imagen4.getImage(), px + 4, py + 4, 90, 90, null);

Page 4: Memorama Java

                break;            case 5:                g.drawImage(imagen5.getImage(), px + 4, py + 4, 90, 90, null);                break;            case 6:                g.drawImage(imagen6.getImage(), px + 4, py + 4, 90, 90, null);                break;            case 7:                g.drawImage(imagen7.getImage(), px + 4, py + 4, 90, 90, null);                break;            case 8:                g.drawImage(imagen8.getImage(), px + 4, py + 4, 90, 90, null);                break;        }    }

    //METODO DONDE SE DIBUJA EN TABLERO DE JUEGO    public void paint(Graphics g) {        g.drawImage(imagenFondo.getImage(), 0, 0, 1024, 768, null);        g.setColor(Color.black);//Color de las letra        g.setFont(new Font("Arial", Font.BOLD, 22));//Tipo de letras        g.drawString("!  !", 200, 60);//nosotros        g.setColor(Color.white);//Otro color        g.drawString("!  !", 198, 58);// nosotros        g.setColor(Color.black);        int i, j;        for (i = 0; i < 4; i++) {            for (j = 0; j < 4; j++) {                if (arriba[i][j]) {                    dibCuadro(g, CX + j * EX, CY + i * EY, tablero[i][j]);                } else {                    dibCuadro(g, CX + j * EX, CY + i * EY, 0);                }            }        }

        //salir        g.setColor(Color.red);        g.fillRect(600, 250, 150, 30);

        g.setColor(Color.green);        g.fillRect(599, 310, 150, 30);

        //contenido de las opciones del juego        g.setFont(new Font("Arial", Font.BOLD, 16));        g.setColor(Color.white);        g.drawString("Salir del Juego", 615, 270);

Page 5: Memorama Java

        g.setColor(Color.black);        g.drawString("Nuevo Juego", 620, 330);        g.setColor(Color.blue);           }

    //MEDODO DONDE SE REALIZA LA MAYORIA DE LOS PROCESOS DEL JUEGO    public void mouseClicked(MouseEvent me) {        NC = NC + 1;//numero de clicks        mcx = me.getX();//toma la posicion del clic en x        mcy = me.getY();//toma la posicion del clic en y        int i, j;        //este if veridicva que se de clic sonbre el area de juego        if ((mcx >= CX) && (mcy >= CY) && (mcx <= (CX + 4 * EX)) && (mcy <= (CY + 4 * EY)) /*&&!pausa*/) {            i = (mcy - CY) / EY;            j = (mcx - CX) / EX;            //nos sirve para verificar que la carta que se intenta voltear esta oculta y el numero de parejas es menos que 7            if (arriba[i][j] != true && parejas <= 7) {                if (!arriba[i][j]) {                    Arriba = Arriba + 1;                    arriba[i][j] = true;repaint();//Voltea la carta boca Arriba                    //este if toma la posicion de tablero[i][j] y se las asigna a o y p que son de la primera carta                    //y la variable carta guarda el valor de la primera carta                    if (Arriba == 1) {                        carta1 += tablero[i][j];                        o = i;                        p = j;                    }                    //cuando Arriba vale 2 la variable carta2 toma el valor de la posicion de tablero[i][j]                    if (Arriba == 2) {                        carta2 += tablero[i][j];                        //compara el valor de las dos cartas si son iguales determina que es una pareja                        if (carta1 == carta2) {                            JOptionPane.showMessageDialog(null, "Forman una pareja", "Memorama en Java", JOptionPane.PLAIN_MESSAGE);                            //regresamos el valor de las variables a sus valores iniciales                            Arriba = 0;                            carta1 = 0;                            carta2 = 0;                            //colocamos las cartas en vardadero para dejarlas visibels durante el resto del juego

Page 6: Memorama Java

                            arriba[i][j] = true;                            arriba[o][p] = true;                            //contabilizamos el numero de parejas                            parejas = parejas + 1;                            //si el numero de parejas a llegado a 8 entonces damos por concluido el juego                            if (parejas == 8) {    JOptionPane.showMessageDialog(null, "Fin del Juego..!!", "Memorama en Java", JOptionPane.PLAIN_MESSAGE);                                }                        } else {                            NE = NE + 1;                            JOptionPane.showMessageDialog(null, "No forman pareja..!!", "Memorama en Java", JOptionPane.PLAIN_MESSAGE);                            Arriba = 0;                            carta1 = 0;                            carta2 = 0;                            arriba[i][j] = false;                            arriba[o][p] = false;;                        }                    }                } else {                    arriba[i][j] = false;//Cata oculta                }//fin de la comparacion            }//fin del arriba        }//fin del if de mcx mcy

        //termina la aplicacion             if (mcx >= 600 && mcx <= 750 && mcy >= 250 && mcy <= 280) {            System.exit(0);        }               //para reinizializar el juego        if (mcx >= 599 && mcx <= 749 && mcy >= 310 && mcy <= 340) {            Memorama newPlayer = new Memorama();            repaint();        }    }

    public void mouseMoved(MouseEvent me) {}    public void mousePressed(MouseEvent e) {}    public void mouseReleased(MouseEvent e) {}    public void mouseEntered(MouseEvent me) {}    public void mouseExited(MouseEvent me) {}    public void mouseDragged(MouseEvent e) {}

Page 7: Memorama Java

    /*public static void main(String args[]) {        //String nombre1 = "";        //nombre1 = JOptionPane.showInputDialog(null, "Nombre del Jugador", "Memorama en Java", JOptionPane.PLAIN_MESSAGE);        //if (nombre1 != null) {            Memorama coordenada = new Memorama();          //  coordenada.NOMBRE(nombre1);        //}    }*/}------------------------------------------------------------------------------------------------------------CODIGO DEL CLIENTE------------------------------------------------------------------------------------------------------------import java.io.*;import java.rmi.*;import java.rmi.registry.Registry;import java.rmi.registry.LocateRegistry;import java.awt.*;import java.awt.event.*;import java.net.InetAddress;import javax.swing.*;import javax.swing.JOptionPane;import java.util.*;import java.util.Timer;import java.util.TimerTask;public class Cliente4 extends Frame implements MouseListener, MouseMotionListener{    private int tablero[][] =  {{0, 0, 0, 0, 0, 0, 0, 0},                                {0, 0, 0, 0, 0, 0, 0, 0},                                {0, 0, 0, 0, 0, 0, 0, 0},                                {0, 0, 0, 0, 0, 0, 0, 0},                                {0, 0, 0, 0, 0, 0, 0, 0},                                {0, 0, 0, 0, 0, 0, 0, 0},                                {0, 0, 0, 0, 0, 0, 0, 0},                                {0, 0, 0, 0, 0, 0, 0, 0}};    private boolean arriba[][] =   {{false, false, false, false,false, false, false, false},                                    {false, false, false, false,false, false, false, false},                                    {false, false, false, false,false, false, false, false},                                    {false, false, false, false,false, false, false, false},                                    {false, false, false, false,false, false, false, false},                                    {false, false, false, false,false, false, false, false},                                    {false, false, false, false,false, false, false, false},                                    {false, false, false, false,false, false, false, false}}; private boolean arriba2[][] =   {{false, false, false, false,false, false, false, false},                                    {false, false, false, false,false, false, false, false},                                    {false, false, false, false,false, false, false, false},                                    {false, false, false, false,false, false, false, false},

Page 8: Memorama Java

                                    {false, false, false, false,false, false, false, false},                                    {false, false, false, false,false, false, false, false},                                    {false, false, false, false,false, false, false, false},                                    {false, false, false, false,false, false, false, false}};    private final int CX = 50;//CX y CY establecen el centro geom�trico de las gr�ficas    private final int CY = 50;    private int NE = 0;//para contar el numero de clic que da el jugador y el numero de errores    private int NC = 0;    private int k;    private int l;    private int t;    private int Arriba = 0;//para saber que cartas se encuentran boca arriba     private int carta1 = 0;    private int carta2 = 0;    private final int EX = 50;//EX y EY establecen el tama�o de las gr�ficas    private final int EY = 50;    private int mcy, mcx;//Variables con las cuales sabemos la posicion y movimiento del mouse    private int mmx, mmy;    private Random r = new Random();//declaramos la variable r que almacenara el valor del random    public ImageIcon imagenFondo;//declamamos los objetos donde se cargaran la imagenes    public ImageIcon imagenOculta;    public ImageIcon imagen1;    public ImageIcon imagen2;    public ImageIcon imagen3;    public ImageIcon imagen4;    public ImageIcon imagen5;    public ImageIcon imagen6;    public ImageIcon imagen7;    public ImageIcon imagen8;    public ImageIcon imagen9;    public ImageIcon imagen10;    public ImageIcon imagen11;    public ImageIcon imagen12;    public ImageIcon imagen13;    public ImageIcon imagen14;    public ImageIcon imagen15;    public ImageIcon imagen16;    public ImageIcon imagen17;    public ImageIcon imagen18;    public ImageIcon imagen19;    public ImageIcon imagen20;    public ImageIcon imagen21;    public ImageIcon imagen22;    public ImageIcon imagen23;

Page 9: Memorama Java

    public ImageIcon imagen24;    public ImageIcon imagen25;    public ImageIcon imagen26;    public ImageIcon imagen27;    public ImageIcon imagen28;    public ImageIcon imagen29;    public ImageIcon imagen30;    public ImageIcon imagen31;    public ImageIcon imagen32;    public MemoInt h ;    public String nombre;    public Timer timer;    public int o;//la variable o y p guardan temporalmente las posiciones de la segunda carta al momento de ser volteada    public int p;    public int parejas;//lleva el control de las parejas encontradas    public Cliente4(String abc) throws RemoteException    { //try{ nombre=abc;///*InetAddress.getByName(*/abc//);//LocateRegistry.createRegistry(1099); //}catch(java.net.UnknownHostException e) //{System.out.print(e);}         JOptionPane.showMessageDialog(null, "Eres el jugador 4 ..!!", "Memorama en Java", JOptionPane.PLAIN_MESSAGE);            int i, j, k, l;               try        {                       String URLRegistro ="rmi://"+nombre+"/Memorama";            h =(MemoInt) Naming.lookup(URLRegistro);            tablero =   h.tab();            arriba = h.arr(arriba);        }// fin try            catch (Exception exc)        {            System.out.println("Exception es esto : ");exc.printStackTrace();           } // fin catch        addMouseListener(this);  //Escuchamos eventos de raton        addMouseMotionListener(this); // y de movimientos de raton        timer = new Timer(); timer.schedule(new again(),0, 1*500);        setSize(1024, 768);//**********************        imagenOculta = new ImageIcon(getClass().getResource("oculta2.png"));//cargamos la imagenes

Page 10: Memorama Java

        imagenFondo = new ImageIcon(getClass().getResource("fondo.png"));        imagen1 = new ImageIcon(getClass().getResource("1.jpg"));        imagen2 = new ImageIcon(getClass().getResource("2.jpg"));        imagen3 = new ImageIcon(getClass().getResource("3.jpg"));        imagen4 = new ImageIcon(getClass().getResource("4.jpg"));        imagen5 = new ImageIcon(getClass().getResource("5.jpg"));        imagen6 = new ImageIcon(getClass().getResource("6.JPG"));        imagen7 = new ImageIcon(getClass().getResource("7.jpg"));        imagen8 = new ImageIcon(getClass().getResource("8.jpg"));        imagen9 = new ImageIcon(getClass().getResource("9.png"));        imagen10 = new ImageIcon(getClass().getResource("10.png"));        imagen11 = new ImageIcon(getClass().getResource("11.png"));        imagen12 = new ImageIcon(getClass().getResource("12.png"));        imagen13 = new ImageIcon(getClass().getResource("13.png"));        imagen14 = new ImageIcon(getClass().getResource("14.png"));        imagen15 = new ImageIcon(getClass().getResource("15.png"));        imagen16 = new ImageIcon(getClass().getResource("16.png"));        imagen17 = new ImageIcon(getClass().getResource("17.png"));        imagen18 = new ImageIcon(getClass().getResource("18.png"));        imagen19 = new ImageIcon(getClass().getResource("19.jpg"));        imagen20 = new ImageIcon(getClass().getResource("20.jpg"));        imagen21 = new ImageIcon(getClass().getResource("21.JPG"));        imagen22 = new ImageIcon(getClass().getResource("22.jpg"));        imagen23 = new ImageIcon(getClass().getResource("23.jpg"));        imagen24 = new ImageIcon(getClass().getResource("24.jpg"));        imagen25 = new ImageIcon(getClass().getResource("25.jpg"));        imagen26 = new ImageIcon(getClass().getResource("26.jpg"));        imagen27 = new ImageIcon(getClass().getResource("27.jpg"));        imagen28 = new ImageIcon(getClass().getResource("28.jpg"));        imagen29 = new ImageIcon(getClass().getResource("29.jpg"));        imagen30 = new ImageIcon(getClass().getResource("30.jpg"));        imagen31 = new ImageIcon(getClass().getResource("31.jpg"));        imagen32 = new ImageIcon(getClass().getResource("32.jpg"));        setUndecorated(true);        setResizable(false);        setBackground(new Color(130, 158, 16));//Parte del Constructor        setTitle(" MEMORAMA ");        Dimension Pantalla = Toolkit.getDefaultToolkit().getScreenSize();//para centrar en la pantalla        Dimension frame = this.getSize();        setLocation((Pantalla.width / 2 - (frame.width / 2)), Pantalla.height / 2 - (frame.height / 2));        setVisible(true);//Termina el Constructor    }       public void actualiza()    {

Page 11: Memorama Java

        try        {                       String URLRegistro ="rmi://"+nombre+"/Memorama";            h =(MemoInt) Naming.lookup(URLRegistro);            arriba =   h.arr(arriba2);        }// fin try            catch (Exception exc)        {}    }    public boolean comprueba()    {        for(int q=0;q<8;q++)        {            for(int w=0;w<8;w++)            {                if(arriba[q][w]==false){return false;}            }        }        return true;    }public void arri()    {        try        {                       String URLRegistro ="rmi://"+nombre+"/Memorama";            h =(MemoInt) Naming.lookup(URLRegistro);            h.arrib(arriba);        }// fin try            catch (Exception exc)        {}    }    public boolean mt()    {        try        {                       String URLRegistro ="rmi://"+nombre+"/Memorama";            h =(MemoInt) Naming.lookup(URLRegistro);            if(h.turno()==4){arriba=h.arr(arriba2);repaint();return true;}        }// fin try            catch (Exception exc)        {}actualiza();return false ;    }    public void dibCuadro(Graphics g, int px, int py, int v) {        switch (v) {            case 0:

Page 12: Memorama Java

                g.drawImage(imagenOculta.getImage(), px, py, 50, 50, null);                break;            case 1:                g.drawImage(imagen1.getImage(), px , py, 50, 50, null);                break;            case 2:                g.drawImage(imagen2.getImage(), px , py, 50, 50, null);                break;            case 3:                g.drawImage(imagen3.getImage(), px , py, 50, 50, null);                break;            case 4:                g.drawImage(imagen4.getImage(), px , py, 50, 50, null);                break;            case 5:                g.drawImage(imagen5.getImage(), px , py, 50, 50, null);                break;            case 6:                g.drawImage(imagen6.getImage(), px , py, 50, 50, null);                break;            case 7:                g.drawImage(imagen7.getImage(), px , py, 50, 50, null);                break;            case 8:                g.drawImage(imagen8.getImage(), px , py, 50, 50, null);                break;            case 9:                g.drawImage(imagen9.getImage(), px , py, 50, 50, null);                break;            case 10:                g.drawImage(imagen10.getImage(), px , py, 50, 50, null);                break;            case 11:                g.drawImage(imagen11.getImage(), px , py, 50, 50, null);                break;            case 12:                g.drawImage(imagen12.getImage(), px , py, 50, 50, null);                break;            case 13:                g.drawImage(imagen13.getImage(), px , py, 50, 50, null);                break;            case 14:                g.drawImage(imagen14.getImage(), px , py, 50, 50, null);                break;            case 15:                g.drawImage(imagen15.getImage(), px , py, 50, 50, null);                break;

Page 13: Memorama Java

            case 16:                g.drawImage(imagen16.getImage(), px , py, 50, 50, null);                break;            case 17:                g.drawImage(imagen17.getImage(), px , py, 50, 50, null);                break;            case 18:                g.drawImage(imagen18.getImage(), px , py, 50, 50, null);                break;            case 19:                g.drawImage(imagen19.getImage(), px , py, 50, 50, null);                break;            case 20:                g.drawImage(imagen20.getImage(), px , py, 50, 50, null);                break;            case 21:                g.drawImage(imagen21.getImage(), px , py, 50, 50, null);                break;            case 22:                g.drawImage(imagen22.getImage(), px , py, 50, 50, null);                break;            case 23:                g.drawImage(imagen23.getImage(), px , py, 50, 50, null);                break;            case 24:                g.drawImage(imagen24.getImage(), px , py, 50, 50, null);                break;            case 25:                g.drawImage(imagen25.getImage(), px , py, 50, 50, null);                break;            case 26:                g.drawImage(imagen26.getImage(), px , py, 50, 50, null);                break;            case 27:                g.drawImage(imagen27.getImage(), px , py, 50, 50, null);                break;            case 28:                g.drawImage(imagen28.getImage(), px , py, 50, 50, null);                break;            case 29:                g.drawImage(imagen29.getImage(), px , py, 50, 50, null);                break;            case 30:                g.drawImage(imagen30.getImage(), px , py, 50, 50, null);                break;            case 31:                g.drawImage(imagen31.getImage(), px , py, 50, 50, null);

Page 14: Memorama Java

                break;            case 32:                g.drawImage(imagen32.getImage(), px , py, 50, 50, null);                break;                   }    }    public void paint(Graphics g) {        g.drawImage(imagenFondo.getImage(), 0, 0, 1024, 768, null);        g.setColor(Color.black);//Color de las letra        g.setFont(new Font("Arial", Font.BOLD, 22));//Tipo de letras        g.drawString("!  !", 200, 60);//nosotros        g.setColor(Color.white);//Otro color        g.drawString("!  !", 198, 58);// nosotros        g.setColor(Color.black);        int i, j;        for (i = 0; i < 8; i++) {            for (j = 0; j < 8; j++) {                if (arriba[i][j]) {                    dibCuadro(g, CX + j * EX, CY + i * EY, tablero[i][j]);                } else {                    dibCuadro(g, CX + j * EX, CY + i * EY, 0);                }            }        }        g.setColor(Color.red);        g.fillRect(600, 250, 150, 30);        g.setFont(new Font("Arial", Font.BOLD, 16));        g.setColor(Color.white);        g.drawString("Salir del Juego", 615, 270);        g.setColor(Color.black);    }    public void mouseClicked(MouseEvent me) {              if(mt()){                                            if (comprueba()==true) {    JOptionPane.showMessageDialog(null, "Fin del Juego..!!\nTu numero de parejas encontradas : "+parejas, "Memorama en Java", JOptionPane.PLAIN_MESSAGE);    }        NC = NC + 1;//numero de clicks        mcx = me.getX();//toma la posicion del clic en x        mcy = me.getY();//toma la posicion del clic en y        int i, j;

Page 15: Memorama Java

        if ((mcx >= CX) && (mcy >= CY) && (mcx <= (CX + 8 * EX)) && (mcy <= (CY + 8 * EY)) /*&&!pausa*/) {            i = (mcy - CY) / EY;j = (mcx - CX) / EX;            if (arriba[i][j] != true && parejas <= 15) {                if (!arriba[i][j]) {                    Arriba = Arriba + 1;                    arriba[i][j] = true;arri();repaint();//Voltea la carta boca Arriba                    if (Arriba == 1) {                        carta1 += tablero[i][j];o = i;p = j;                    }                    if (Arriba == 2) {                        carta2 += tablero[i][j];                        //compara el valor de las dos cartas si son iguales determina que es una pareja                        if (carta1 == carta2) {                            JOptionPane.showMessageDialog(null, "Forman una pareja", "Memorama en Java", JOptionPane.PLAIN_MESSAGE);                            Arriba = 0;carta1 = 0;carta2 = 0;arriba[i][j] = true;arriba[o][p] = true;                            actualiza();repaint();                            parejas = parejas + 1;                            if (comprueba()==true) {    JOptionPane.showMessageDialog(null, "Fin del Juego..!!\nTu numero de parejas encontradas : "+parejas, "Memorama en Java", JOptionPane.PLAIN_MESSAGE);    }                        } else {                            NE = NE + 1;                            JOptionPane.showMessageDialog(null, "No forman pareja..!!", "Memorama en Java", JOptionPane.PLAIN_MESSAGE);                            Arriba = 0;carta1 = 0;carta2 = 0;                            arriba[i][j] = false;                            arriba[o][p] = false;;                            arri();actualiza();repaint();                            try {                                                               String URLRegistro ="rmi://"+nombre+"/Memorama";                                h =(MemoInt) Naming.lookup(URLRegistro);                                h.turn();                            }catch (Exception exc) {}                        }                    }                } else {                    arriba[i][j] = false;                    actualiza();                    if (comprueba()==true) {    JOptionPane.showMessageDialog(null, "Fin del Juego..!!\nTu numero de parejas encontradas : "+parejas, "Memorama en Java", JOptionPane.PLAIN_MESSAGE);    }

Page 16: Memorama Java

                    repaint();//Cata oculta                }//fin de la comparacion            }//fin del arriba        }//fin del if de mcx mcy        if (mcx >= 600 && mcx <= 750 && mcy >= 250 && mcy <= 280) {            System.exit(0);        }                      }else{          JOptionPane.showMessageDialog(null, "No es tu turno..!!", "Memorama en Java", JOptionPane.PLAIN_MESSAGE);           }                         }    public void mouseMoved(MouseEvent me) {}    public void mousePressed(MouseEvent e) {}    public void mouseReleased(MouseEvent e) {}    public void mouseEntered(MouseEvent me) {}    public void mouseExited(MouseEvent me) {}    public void mouseDragged(MouseEvent e) {}    class again extends TimerTask { public void run() { if(!mt()){                    t=1;                    repaint();                }else{                    if(t==1){                    JOptionPane.showMessageDialog(null, "Ahora es tu turno..!!", "Memorama en Java", JOptionPane.PLAIN_MESSAGE);                    t=0;                    }                } }}public static void main(String args[]) throws RemoteException    {         Cliente4 Cliente4 = new Cliente4(args[0]);                   } // fin main} // fin clase------------------------------------------------------------------------------------------------------------

Page 17: Memorama Java

CODIGO DEL SERVIDOR------------------------------------------------------------------------------------------------------------import java.rmi.*;import java.rmi.server.*;import java.rmi.registry.Registry;import java.rmi.registry.LocateRegistry;import java.net.*;import java.io.*;public class Servidor{    public static void main(String args[])    {        String URLRegistro;        try        { //LocateRegistry.createRegistry(1099);            MemoImp objExportado = new MemoImp();            String host = InetAddress.getLocalHost().getHostName();            URLRegistro ="rmi://"+args[0]+"/Memorama";            Naming.rebind(URLRegistro, objExportado);            System.out.println("Servidor Memorama preparado.");        } // fin try            catch (Exception excr)        {            System.out.println("Excepción en Servidor.main: " + excr);        } // fin catch    } // fin mai} // fin clase------------------------------------------------------------------------------------------------------------CODIGO DE LA INTERFAZ------------------------------------------------------------------------------------------------------------import java.rmi.*;public interface MemoInt extends Remote{    public int[][] tab( )throws java.rmi.RemoteException;    public boolean[][] arr( boolean ar[][])throws java.rmi.RemoteException;    public int turno()throws java.rmi.RemoteException;    public void turn()throws java.rmi.RemoteException; public void arrib( boolean ar[][])throws RemoteException;}------------------------------------------------------------------------------------------------------------CODIGO DE LA IMPLEMENTACION DE LA INTERFAZ-----------------------------------------------------------------------------------------------------------import java.rmi.*;import java.rmi.server.*;import java.util.*;public class MemoImp extends UnicastRemoteObject

Page 18: Memorama Java

implements MemoInt{      int i,j,k,l,t;    Random r = new Random();    int tablero[][]    =        {{0, 0, 0, 0, 0, 0, 0, 0},                                {0, 0, 0, 0, 0, 0, 0, 0},                                {0, 0, 0, 0, 0, 0, 0, 0},                                {0, 0, 0, 0, 0, 0, 0, 0},                                {0, 0, 0, 0, 0, 0, 0, 0},                                {0, 0, 0, 0, 0, 0, 0, 0},                                {0, 0, 0, 0, 0, 0, 0, 0},                                {0, 0, 0, 0, 0, 0, 0, 0}};    boolean arriba[][] =   {{false, false, false, false,false, false, false, false},                            {false, false, false, false,false, false, false, false},                            {false, false, false, false,false, false, false, false},                            {false, false, false, false,false, false, false, false},                            {false, false, false, false,false, false, false, false},                            {false, false, false, false,false, false, false, false},                            {false, false, false, false,false, false, false, false},                            {false, false, false, false,false, false, false, false}};    public MemoImp( ) throws RemoteException    {        super( );        t=1;        for (k = 1; k <= 32; k++)        {//Coloca las cartas en forma aleatoria, realiza este proceso hasta llenar la matriz            for (l = 1; l <= 2; l++)            {//asi se forman las parejas colocando cada una 2 veces pero en diferente posicion                do                {                    i = r.nextInt(8);                    j = r.nextInt(8);                } while (tablero[i][j] != 0);                tablero[i][j] = k;            }        }    }    public int[][] tab( )throws RemoteException    {        return tablero;    }    public boolean[][] arr( boolean ar[][])throws RemoteException    {        for(int x =0;x<8;x++)        {            for(int y=0;y<8;y++)            {

Page 19: Memorama Java

                                   if(ar[x][y]||arriba[x][y]){arriba[x][y]=true;}                           }        }        return arriba;    } public void arrib( boolean ar[][])throws RemoteException    {        for(int x =0;x<8;x++)        {            for(int y=0;y<8;y++)            {                                   if(ar[x][y]){arriba[x][y]=true;}else{arriba[x][y]=false;}                           }        }        //return arriba;    }       public int turno( )throws RemoteException{return t;}    public void turn()throws RemoteException{if(t==4){t=1;}else{t++;}}   }