0% encontró este documento útil (0 votos)
814 vistas

Memorama Java

Este documento presenta el código para un juego de memoria ("Memorama") implementado en Java. El código crea un tablero de 4x4 y coloca parejas de cartas en posiciones aleatorias. Cuando el jugador hace clic en una carta, esta se voltea para revelar su imagen. Si las imágenes de las dos cartas volteadas coinciden, se considera una pareja encontrada. De lo contrario, las cartas se voltean nuevamente. El objetivo es encontrar todas las parejas en el tablero. El código también incluye funciones para dibu

Cargado por

Pablo Lopez
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
814 vistas

Memorama Java

Este documento presenta el código para un juego de memoria ("Memorama") implementado en Java. El código crea un tablero de 4x4 y coloca parejas de cartas en posiciones aleatorias. Cuando el jugador hace clic en una carta, esta se voltea para revelar su imagen. Si las imágenes de las dos cartas volteadas coinciden, se considera una pareja encontrada. De lo contrario, las cartas se voltean nuevamente. El objetivo es encontrar todas las parejas en el tablero. El código también incluye funciones para dibu

Cargado por

Pablo Lopez
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 19

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 geomtrico de las
grficas
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 tamao de las grficas


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 geomtrico de las grficas
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 tamao de las grficas
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("Excepcin 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++;}}
}

También podría gustarte