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); } } }