Pues lo dicho, tengo que hacer un programa en php en el cual un raton encuentra un queso en un laberinto, mas que el codigo necesito una explicación, en principio habia pensado en hacer el laberinto en un array de dos dimensiones y asignarle una prioridad a cada movimiento, es decir:
Arriba, si la casilla de arriba es un muro, sigue...
Derecha, si la casilla de la derecha es un muro, sigue...
Abajo, si la casilla de abajo es un muro, sigue...
Izquierda.
Para evitar que se atascara las casillas que no son muro tienen un valor 0 que se incrementa cuando se recorre, entonces tambien usaria como prioridad que este menos veces recorrida, con esto en teoria al final acabaria dando con el queso y luego ya pensaria la manera de que escogiera la ruta mas corta.
Soy bastante, bastante novato programando pero el cacho de codigo que llevo es:
<?php
//Presentamos laberinto de 10 x 10
$laberinto[1]=array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1);
$laberinto[2]=array(-1,0,0,0,0,0,-1,0,0,-1);
$laberinto[3]=array(-1,0,0,-1,-1,0,-1,-1,0,-1);
$laberinto[4]=array(-1,-1,0,-1,-1,0,0,0,0,-1);
$laberinto[5]=array(-1,-1,0,-1,0,0,-1,-1,-1,-1);
$laberinto[6]=array(-1,0,0,-1,0,-1,-1,0,0,-1);
$laberinto[7]=array(-1,0,-1,0,0,-1,0,0,-1,-1);
$laberinto[8]=array(-1,0,-1,-1,0,0,0,-1,-1,-1);
$laberinto[9]=array(-1,0,-1,0,0,-1,0,0,-1,-1);
$laberinto[10]=array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1);
//Colocamos el queso en el array.
do{
$qh=rand(2,9);
$qv=rand(1,8);
} while ($laberinto[$qh][$qv]==-1);
if($laberinto[$qh][$qv]<>-1)$laberinto[$qh][$qv]=-2;
//Colocamos el ratón en el array.
do{
$rh=rand(2,9);
$rv=rand(1,8);
} while ($laberinto[$rh][$rv]==-1 or $laberinto[$rh][$rv]==$laberinto[$qh][$qv]);
if($laberinto[$rh][$rv]<>-1)$laberinto[$rh][$rv]=-3;
//Presentamos el laberinto con ratón y queso.
printf("<table CELLPADDING=30 CELLSPACING=3>");
for ($i=1;$i<=10;$i++){
printf("<tr>");
for ($j=0;$j<=9;$j++){
switch($laberinto[$i][$j]){
case -1;
printf("<td bgcolor='black'></td>");
break;
case -2;
printf("<td bgcolor='yellow'></td>");
break;
case -3;
printf("<td bgcolor='red'></td>");
break;
default;
printf("<td bgcolor='white'></td>");
break;
}
}
}
printf("</table>");
?>
Estoy abierto a otros metodos, pero lo dicho mas que un codigo me hace falta una explicacion.