Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda con Hilos, Juego Pacman - Java y NetBeans

Estas en el tema de Ayuda con Hilos, Juego Pacman - Java y NetBeans en el foro de Java en Foros del Web. Hola este es mi primer mensaje, me gustaría ver si alguien puede ayudarme con una tarea que estoy haciendo, consiste en hacer un Pacman en ...
  #1 (permalink)  
Antiguo 24/06/2009, 18:54
 
Fecha de Ingreso: junio-2009
Ubicación: San Ramón, Alajuela
Mensajes: 1
Antigüedad: 14 años, 10 meses
Puntos: 0
Ayuda con Hilos, Juego Pacman - Java y NetBeans

Hola este es mi primer mensaje, me gustaría ver si alguien puede ayudarme con una tarea que estoy haciendo, consiste en hacer un Pacman en Java, lo estoy haciendo utilizando una matriz de JLabels, JFrame, y para ahorrarme trabajo utilizo los "shorcuts" de los menú items para manejar arriba, abajo, izquierda y derecha.
Bueno el asunto es que para poner a Pacman a Moverse tengo que crearle un hilo para que cuando cambie de dirección entonces el siga caminando solo, pero ya hice el hilo lo que no es es como comunicar ese Hilo con la Clase en donde está la interfaz del juego, voy a poner como la parte más importante de las clases para que se den una idea de por donde anda el asunto, cualquier ayuda se les agradece mucho.
La idea es que el icono ipacmanr se mueva cuando toco la tecla derecha por así decirlo, pero no se como hacerlo, cuando el camina entonces sustitulle el suelo con una bolita con suelo vacio para lo cual usé los iconos suelol y suelov, bueno espero que alguien me pueda ubicar un poco jeje se les agradece la ayuda. Saludos!

************************************************** *****************

package pacman;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

/**
*
* author nehilor
*/
public class InterfazJuego extends JFrame {
HiloPacman mi;
HiloGhost1 h1 = new HiloGhost1();
static int direccion;
static int ejeX, ejeY;
JLabel[][] lbls = new JLabel[28][31];
static int matriz[][] = new int[28][31];
ImageIcon ipacmanr = new javax.swing.ImageIcon(getClass().getResource("/imagenes/pacmanright.gif"));
ImageIcon ipacmanl = new javax.swing.ImageIcon(getClass().getResource("/imagenes/pacmanleft.gif"));
ImageIcon ipacmanu = new javax.swing.ImageIcon(getClass().getResource("/imagenes/pacmanup.gif"));
ImageIcon ipacmand = new javax.swing.ImageIcon(getClass().getResource("/imagenes/pacmandown.gif"));
ImageIcon suelol = new javax.swing.ImageIcon(getClass().getResource("/imagenes/suelolleno.gif"));
ImageIcon suelov = new javax.swing.ImageIcon(getClass().getResource("/imagenes/suelovacio.gif"));
ImageIcon orangeghost = new javax.swing.ImageIcon(getClass().getResource("/imagenes/orangeghost.gif"));
ImageIcon pinkghost = new javax.swing.ImageIcon(getClass().getResource("/imagenes/pinkghost.gif"));
ImageIcon redghost = new javax.swing.ImageIcon(getClass().getResource("/imagenes/redghost.gif"));
ImageIcon blueghost = new javax.swing.ImageIcon(getClass().getResource("/imagenes/blueghost.gif"));
ImageIcon fruta1 = new javax.swing.ImageIcon(getClass().getResource("/imagenes/fruta1.jpg"));
ImageIcon scarredghost = new javax.swing.ImageIcon(getClass().getResource("/imagenes/scarredghost.gif"));
ImageIcon pared = new javax.swing.ImageIcon(getClass().getResource("/imagenes/pared.jpg"));

/** Creates new form InterfazJuego */
public InterfazJuego() {
initComponents();
h1.start();
for (int i = 0; i < 28; i++) {
for (int j = 0; j < 31; j++) {
lbls[i][j] = new JLabel();
lbls[i][j].setIcon(pared);
lbls[i][j].setBounds((i) * 15, (j) * 15, 15, 15);
setSize(423, 518);
this.getContentPane().add(lbls[i][j]);
this.setResizable(false);


}
}
Aquí van como mil linea de como hice el laberinto jaja pero no es importante.
lbls[1][29].setIcon(ipacmanr);//pacman
ejeX = 1;
ejeY = 29;
pnl.setBounds(1, 1, 423, 518);
this.getContentPane().add(pnl);


}


private void DerechaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_DerechaActionPerformed
direccion = 6;
lbls[ejeX][ejeY].setIcon(ipacmanr);
mi = new HiloPacman(100, 6);
mi.start();

}//GEN-LAST:event_DerechaActionPerformed

private void AbajoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AbajoActionPerformed
//direccion = 2;
lbls[ejeX][ejeY].setIcon(ipacmand);
mi = new HiloPacman(100, 2);
mi.start();

}//GEN-LAST:event_AbajoActionPerformed

/**
* param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {
}
});
}

************************************************** ***************

En esta clase va el hilo...

************************************************** ***************

public class HiloPacman extends Thread {

int Periodo = 1000;
int Direccion = 6;//8 es arriba, 6 es derecha, 4 es izquierda, 2 es abajo
int Contador = 1;
InterfazJuego ij;

public HiloPacman(int periodo, int Direccion) {
this.Periodo = periodo;
this.Direccion = Direccion;
}

public void run() {


try {
sleep(Periodo);
while (true) {

if (Direccion == 6 && ij.lbls[ij.ejeX][ij.ejeY].getIcon() == ij.ipacmanr &&
ij.lbls[ij.ejeX + 1][ij.ejeY].getIcon() == ij.suelol ||
ij.lbls[ij.ejeX + 1][ij.ejeY].getIcon() == ij.suelov) {
ij.lbls[ij.ejeX + 1][ij.ejeY].setIcon(ij.ipacmanr);
ij.lbls[ij.ejeX][ij.ejeY].setIcon(ij.suelov);
ij.ejeX = ij.ejeX + 1;

sleep(150);

System.out.print("Hilo Derecha...\n");
continue;
// if (Direccion!=6){
// stop();
// System.out.print("Se detuvo Hilo Derecha...\n");
// }
}
else if (Direccion == 4 && ij.lbls[ij.ejeX][ij.ejeY].getIcon() == ij.ipacmanl &&
ij.lbls[ij.ejeX - 1][ij.ejeY].getIcon() == ij.suelol ||
ij.lbls[ij.ejeX - 1][ij.ejeY].getIcon() == ij.suelov) {
ij.lbls[ij.ejeX - 1][ij.ejeY].setIcon(ij.ipacmanr);
ij.lbls[ij.ejeX][ij.ejeY].setIcon(ij.suelov);
ij.ejeX = ij.ejeX - 1;

sleep(150);
System.out.print("Hilo Derecha...\n");
continue;
//sleep(Periodo);
// if (Direccion != 4) {
// stop();
// }

}
else if (Direccion== 2 && ij.lbls[ij.ejeX][ij.ejeY].getIcon() == ij.ipacmand &&
ij.lbls[ij.ejeX][ij.ejeY + 1].getIcon() == ij.suelol ||
ij.lbls[ij.ejeX][ij.ejeY + 1].getIcon() == ij.suelov) {
ij.lbls[ij.ejeX][ij.ejeY + 1].setIcon(ij.ipacmanr);
ij.lbls[ij.ejeX][ij.ejeY].setIcon(ij.suelov);
ij.ejeY = ij.ejeY + 1;

sleep(150);
System.out.print("Hilo Abajo...\n");
continue;
//sleep(Periodo);
// if (Direccion != 2) {
// stop();
// }


}
else if (Direccion == 8 && ij.lbls[ij.ejeX][ij.ejeY].getIcon() == ij.ipacmanu &&
ij.lbls[ij.ejeX][ij.ejeY - 1].getIcon() == ij.suelol ||
ij.lbls[ij.ejeX][ij.ejeY - 1].getIcon() == ij.suelov) {
ij.lbls[ij.ejeX][ij.ejeY - 1].setIcon(ij.ipacmanr);
ij.lbls[ij.ejeX][ij.ejeY].setIcon(ij.suelov);
ij.ejeY = ij.ejeY - 1;

sleep(150);

System.out.print("Hilo Arriba...\n");
continue;
//sleep(Periodo);
// if (Direccion != 8) {
// stop();
// }


}

}
} catch (Exception e) {
System.out.println("Error" + e.getMessage());
}
}
}
************************************************** ***************
  #2 (permalink)  
Antiguo 22/05/2014, 09:57
 
Fecha de Ingreso: mayo-2014
Mensajes: 1
Antigüedad: 10 años
Puntos: 0
Respuesta: Ayuda con Hilos, Juego Pacman - Java y NetBeans

Tienes el programa ya implementado
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:30.