memorama java
DESCRIPTION
LogicaTRANSCRIPT
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
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
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);
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);
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
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) {}
/*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},
{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;
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
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() {
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:
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;
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);
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;
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); }
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------------------------------------------------------------------------------------------------------------
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
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++) {
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++;}} }