Ver Mensaje Individual
  #31 (permalink)  
Antiguo 30/03/2007, 15:55
Avatar de oso96_2000
oso96_2000
 
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 22 años, 6 meses
Puntos: 35
Re: Soluciones para el Desafío del Laberinto

En mi caso, la solucion para que no se pase el raton por el lado del queso sin comerselo, es un metodo mas a la clase..

Código PHP:
function checkAround($a) {
    
$found = array();
    
$xy = &$this->current;
        
    if (
in_array(UP$a) && $this->maze[$xy[1]-1][$xy[0]] == CHEESE)    $found[] = UP;
    if (
in_array(RIGHT$a) && $this->maze[$xy[1]][$xy[0]+1] == CHEESE && empty($found))    $found[] = RIGHT;
    if (
in_array(DOWN$a) && $this->maze[$xy[1]+1][$xy[0]] == CHEESE && empty($found))    $found[] = DOWN;
    if (
in_array(LEFT$a) && $this->maze[$xy[1]][$xy[0]-1] == CHEESE && empty($found))    $found[] = LEFT;
                
    if (empty(
$found))    return $a;
    else    return 
$found;

Y luego, en el metodo solveMaze(), justo antes de la linea que mueve el raton:
Código PHP:
$this->Move($dir[array_rand($dir)]); 
Se agrega esta linea:
Código PHP:
if (count($dir) > 1)    $dir $this->checkAround($dir); 
No lo he probado, pero creo que deberia funcionar.. y con un rato mas de tiempo puedo simplificar mas el nueov metodo xD

Edito: Por cierto, le agrege comentarios a mi codigo.. no muchos, pero ando sin mucho tiempo xD
__________________
Sin Ideas

Última edición por oso96_2000; 30/03/2007 a las 17:58