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

[SOLUCIONADO] Pacman recorrer mapa sin atravesar paredes

Estas en el tema de Pacman recorrer mapa sin atravesar paredes en el foro de Java en Foros del Web. Buenas tardes, Tengo que hacer un PACMAN y me encuentro algo colgada... ya que mi PACMAN aunque se mueve por la matriz no consigue ver ...
  #1 (permalink)  
Antiguo 10/05/2014, 09:14
 
Fecha de Ingreso: diciembre-2007
Mensajes: 24
Antigüedad: 17 años, 1 mes
Puntos: 0
Pacman recorrer mapa sin atravesar paredes

Buenas tardes,

Tengo que hacer un PACMAN y me encuentro algo colgada... ya que mi PACMAN aunque se mueve por la matriz no consigue ver paredes...

Os cuelgo el código a ver si me podéis ayudar... Se supone que en el valor de la matriz 0 es cuando hay pared, y el resto... el resto de cosillas..

Código:
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.awt.event.KeyEvent;
import javax.swing.JDialog;
import javax.swing.JOptionPane;

public class Pacman
{
String nImagen;
Image imagen;
int x,y,dx,dy,width,height,fila,columna,reg,posX,posY;
boolean exito;
Mapa mapa;
int [][] tramado;
public String  move;
int aux=1;
Tablero tablero;
    public Pacman(Mapa mapa)
    {
     
    	
   	this.mapa=mapa;
    	fila=1;
    	
    	columna=8;
    	
        nImagen="pacman.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);
    }

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 int  getFila()
{

	return fila;
   
}
public int getColumna ()
{
	return columna;
}
public void  checkMovimientos (String movimiento,int [][]tramado)
{
	fila=getFila();
	columna=getColumna();

		
	 switch (movimiento)
	 {
	 case "i":
		 	System.out.print(tramado[fila][columna]);
		 	if (tramado[fila][columna--]!=0)
		 	{	
		 		
		 	
		 		tramado[fila][columna]=4;

		 	}
		 	
		 	
		 
		 break;
		 /*
	 case "d":
		
		 
		 if (tramado[fila][columna]!=1)
		 	{
			
			 tramado[fila][columna++]=4;
			
		 		
		 	}
		 
		 break;
		 
	 case "a":
		
	
		 if (tramado[fila][columna]!=1)
		 	{
			System.out.print(fila);
			 //tramado[fila--][columna]=4;
			
		 	}
		
		 break;*/
	 case "b":
		
		 if (tramado[fila--][columna]!=0)
		 	{
			
			//System.out.print(fila);
			//System.out.print(columna);
			 
			 tramado[fila++][columna]=4;
			 //System.out.print(fila,columna);
		 		
		 	}
		 else
		 {
			 //System.out.print(fila);
		 }
		
		 break;
		default:
		 
	 }
	
}

    public void keyPressed (KeyEvent e)
        {
                 int key=e.getKeyCode();

                switch(key)
                  {
                      
                       case KeyEvent.VK_LEFT:
                            move="i";
                          
                            checkMovimientos(move,tramado);
                            break;
                        case KeyEvent.VK_RIGHT:
                             move="d";
                             checkMovimientos(move,tramado);
                            break;
                        case KeyEvent.VK_UP:
                            move="a";
                            checkMovimientos(move,tramado);
                            break;
                        case KeyEvent.VK_DOWN:
                             move="b";
                             checkMovimientos(move,tramado);
                            break;
                        default:
                    }
                    
         
        }
    public void keyReleased (KeyEvent e)
    {
        
                 int key=e.getKeyCode();
                 switch(key)
                    {
                        case KeyEvent.VK_LEFT:

                            dx=0;
                            break;
                        case KeyEvent.VK_RIGHT:
                            dx=0;
                            break;
                        case KeyEvent.VK_UP:
                            dy=0;
                            break;
                        case KeyEvent.VK_DOWN:
                            dy=0;
                            break;
                        default:
                    }
                    
    }
    
}
.
  #2 (permalink)  
Antiguo 10/05/2014, 11:00
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 3 meses
Puntos: 454
Respuesta: Pacman recorrer mapa sin atravesar paredes

No estoy muy seguro, pero creo que cosas como

Código Java:
Ver original
  1. if (tramado[fila][columna--]!=0)

hacen la comparacion con columna y luego decrementan, no creo que sea eso lo que quieres hacer (no he mirado con detalle cual sería la lógica, me guio porque usas columna dentro del if). Haz mejor

Código Java:
Ver original
  1. if (tramado[fila][--columna]!=0)

de esta forma se decrementa primero y luego se realiza la condición. De todas formas, este tipo de cosas da lugar a confusiones, es mejor poner algo así, que no da lugar a equívocos.

Código Java:
Ver original
  1. if (tramado[fila][columna-1]!=0)
  2. {  
  3.    tramado[fila][columna-1]=4;
  4. }

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 10/05/2014, 11:27
 
Fecha de Ingreso: diciembre-2007
Mensajes: 24
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Pacman recorrer mapa sin atravesar paredes

Ya está, solucionado.
Muchísimas gracias :D

Etiquetas: mapa, string, valor
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 02:10.