
14/05/2014, 05:30
|
| | Fecha de Ingreso: diciembre-2007
Mensajes: 24
Antigüedad: 17 años, 4 meses Puntos: 0 | |
Movimiento de coordenadas Buenos días,
Tengo dos clases : Tablero y Blinky (Blinky es un personaje del juego de Pacman)
Quiero que Blinky se mueva por Tablero a cada golpe de timer y se ponga en la posición correcta...
La cosa es que Blinky se mueve, entra por los metodos necesarios, pero no veo los movimientos en pantalla ( con los System.out.print... si veo que las coordenadas cambian)
¿Podríais ayudarme?
Gracias
Código:
public class Blinky
{
String nImagen;
Image imagen;
int x,y,dx,dy,width,height,fila,columna,reg,posX,posY,filaP,columnaP;
boolean situacion=true;
Mapa mapa;
int [][] tramado;
public String move;
int aux=1;
Tablero tablero;
Pacman pacman;
public Blinky(Mapa mapa)
{
this.mapa=mapa;
fila=1;
columna=4;
pacman=new Pacman(mapa);
nImagen="blinky.jpg";
tramado= new int[11][20];
ImageIcon img= new ImageIcon ( this.getClass().getResource(nImagen));
imagen=img.getImage();
width=imagen.getWidth(null);
height=imagen.getHeight(null);
crearTramado(tramado);
controlarMovimientos(situacion);
}
public Rectangle getSize()
{
return new Rectangle (x,y, width,height);
}
public Image getImage()
{
return imagen;
}
public void crearTramado (int [][] tramado)
{
for (int i=0; i<tramado.length; i++)
{
for (int j=0; j<tramado[i].length; j++)
{
tramado[i][j]=mapa.getMap(i,j);
//System.out.print(tramado[i][j]);
}
}
}
public void controlarMovimientos(boolean situacion)
{
if (moverVertical(tramado)&& (moverVerticalArriba(tramado)))
{
fila=fila+1;
//System.out.print("BEBE"+tramado[fila][columna]);
if (tramado[fila][columna]==0)
{
System.out.print("pared");
moverHorizontalIzq(tramado);
if(!moverHorizontalIzq(tramado))
{
moverVerticalArriba(tramado);
}
}
else
{
moverHorizontal(tramado);
}
if ((moverHorizontal(tramado)==false) || (moverHorizontalIzq(tramado)==false))
{
fila=fila+1;
if(tramado[fila][columna]==0)
{
System.out.print("Cero");
}
//columna=columna+1;
// System.out.print("entra en else");
moverVertical(tramado);
}
}
}
//Faltan metodos pero no creo que sea necesario copiarlos
i
public class Tablero extends JPanel implements ActionListener
{
Pacman pacman;
Clyde clyde;
Blinky blinky;
Timer timer;
Mapa plano;
int posX=10;
int posY=10;
int fila,columna;
int [][] mapa;
boolean movimientos;
public Tablero()
{
addKeyListener( new Tadaptadora());
mapa= new int [11][20];
plano= new Mapa();
setFocusable(true);
pacman=new Pacman (plano);
clyde= new Clyde (plano);
blinky= new Blinky(plano);
setBackground(Color.black);
timer=new Timer(30,this);
movimientos=false;
timer.start();
rellenar ();
}
public void paint (Graphics g) // Dibujamos los objetos
{
super.paint(g);
for (int i=0; i<11; i++)
{
for (int j=0; j<20; j++)
{
switch(mapa[i][j])
{
case 0:
g.setColor(Color.blue);
g.fillRect(j*25,i*25,25,25);
break;
case 1:
g.setColor(Color.black);
g.fillRect(j*25,i*25,25,25);
g.setColor(Color.gray);
g.fillOval(j*26,i*26,5,5);
break;
case 2:
g.setColor(Color.black);
g.fillRect(j*25,i*25,25,25);
g.setColor(Color.gray);
g.fillOval(j*26,i*26,8,8);
break;
default:
}
}
Graphics2D g2d=(Graphics2D) g;
g2d.drawImage(pacman.getImage(),pacman.getColumna()*25,pacman.getFila()*25,this);
g2d.drawImage(blinky.getImage(),blinky.getColumna()*25,blinky.getFila()*25,this);
}
}
public void actionPerformed (ActionEvent e) //Cuando el timer salta refresca los valores de los objetos
{
columna=pacman.getColumna();
fila=pacman.getFila();
mapa[fila][columna]=4;
/*columna=blinky.getColumna();
fila=blinky.getFila();
mapa[fila][columna]=3;*/
repaint();
}
private class Tadaptadora extends KeyAdapter //clases privadas para los eventos de teclado
{
public void keyReleased (KeyEvent e)
{
pacman.keyReleased(e);
}
public void keyPressed (KeyEvent e)
{
pacman.keyPressed(e);
}
}
}
|