Laberinto en Php.

Iniciado por n3fisto, 17 Marzo 2010, 16:21 PM

0 Miembros y 1 Visitante están viendo este tema.

n3fisto

Hola como estan miren hice un post anteriormente el cual era de hacer un laberinto y poner al lobo y  caperucita. El lObo tiene que ir detras de caperucita Roja mas o menos lo tengo avanzado por el momento le s mostrare el codigo.
Y la duda con la que estoy

Código (php) [Seleccionar]
<?php 

//Array que devolverá el laberinto 
$array = array( 
    array(
1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1), 
    array(
1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1), 
    array(
1,0,1,0,1,1,1,1,0,1,1,1,1,1,0,1,0,0,1,0,1,0,0,1), 
    array(
1,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,1,0,1,1,1,0,1,1), 
    array(
1,0,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,1), 
    array(
1,0,0,0,0,0,0,1,0,1,1,1,0,1,0,1,1,0,1,0,1,0,0,1), 
    array(
1,1,1,0,1,0,0,1,0,0,0,0,0,1,1,1,1,1,1,0,1,1,1,1), 
    array(
1,0,0,0,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1), 
    array(
1,1,1,0,1,0,0,0,0,0,0,1,0,1,1,1,0,1,1,0,1,1,0,1), 
    array(
1,0,1,0,1,0,1,1,1,1,1,1,0,1,0,1,0,0,1,0,1,0,0,1), 
    array(
1,0,1,0,1,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,1,0,1,1), 
    array(
1,0,1,0,1,0,1,1,1,1,1,0,1,1,0,0,0,1,0,0,1,0,0,1), 
    array(
1,0,0,0,1,0,0,0,0,0,1,0,0,1,0,1,1,1,1,1,1,0,1,1), 
    array(
1,0,1,0,0,0,0,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,1), 
    array(
1,0,1,1,1,0,0,1,0,0,1,0,0,1,0,1,1,1,1,0,1,1,0,1), 
    array(
1,0,0,0,1,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1), 
    array(
1,1,1,0,1,1,1,1,0,1,0,0,1,0,0,1,1,0,0,1,0,1,1,1), 
    array(
1,0,1,0,1,0,0,0,0,1,1,0,1,0,1,0,1,0,1,1,0,1,0,1), 
    array(
1,0,1,0,1,0,1,1,0,0,1,0,0,0,1,0,1,0,0,1,0,1,0,1), 
    array(
1,0,0,0,1,0,0,1,0,0,1,0,1,0,1,0,0,0,1,1,0,0,0,1), 
    array(
1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,1,1,0,0,1,1,1,0,1), 
    array(
1,0,1,0,0,0,0,1,0,1,0,0,1,0,0,0,1,0,1,1,1,1,0,1), 
    array(
1,0,1,0,1,1,1,1,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1), 
    array(
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
); 

/* 
Esta función ubica aleatoriamente (o a través del parámetro $p) 
la caperusita en el laberinto. Además, guarda estas posiciones en las 
variables $qx y $qy 
*/ 
function caperusita(&$array,$p NULL

    global 
$qx,$qy
    if(isset(
$p) && strlen($p) >= 3) { 
        
$p explode(',',$p); 
        
$t[1] = $p[0]; 
        
$t[0] = $p[1]; 
    } else { 
        
$d=count($array); 
        
$t[0]=rand(0,($d-1)); 
        
$t[1]=rand(0,($d-1));     
    } 
    if(
$array[$t[0]][$t[1]] == && isset($array[$t[0]][$t[1]])) { 
        
$array[$t[0]][$t[1]] = 2
        
$qx $t[1]; 
        
$qy $t[0]; 
        return 
TRUE
    } else { 
        return 
caperusita($array); 
    } 


La duda con la que estoy es como poder hacer el laberinto de manera randomica.
osea la forma.

Código (php) [Seleccionar]
//Array que devolverá el laberinto
$array = array(
    array(1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),
    array(1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1),
    array(1,0,1,0,1,1,1,1,0,1,1,1,1,1,0,1,0,0,1,0,1,0,0,1),
    array(1,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,1,0,1,1,1,0,1,1),
    array(1,0,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,1),
    array(1,0,0,0,0,0,0,1,0,1,1,1,0,1,0,1,1,0,1,0,1,0,0,1),
    array(1,1,1,0,1,0,0,1,0,0,0,0,0,1,1,1,1,1,1,0,1,1,1,1),
    array(1,0,0,0,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1),
    array(1,1,1,0,1,0,0,0,0,0,0,1,0,1,1,1,0,1,1,0,1,1,0,1),
    array(1,0,1,0,1,0,1,1,1,1,1,1,0,1,0,1,0,0,1,0,1,0,0,1),
    array(1,0,1,0,1,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,1,0,1,1),
    array(1,0,1,0,1,0,1,1,1,1,1,0,1,1,0,0,0,1,0,0,1,0,0,1),
    array(1,0,0,0,1,0,0,0,0,0,1,0,0,1,0,1,1,1,1,1,1,0,1,1),
    array(1,0,1,0,0,0,0,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,1),
    array(1,0,1,1,1,0,0,1,0,0,1,0,0,1,0,1,1,1,1,0,1,1,0,1),
    array(1,0,0,0,1,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1),
    array(1,1,1,0,1,1,1,1,0,1,0,0,1,0,0,1,1,0,0,1,0,1,1,1),
    array(1,0,1,0,1,0,0,0,0,1,1,0,1,0,1,0,1,0,1,1,0,1,0,1),
    array(1,0,1,0,1,0,1,1,0,0,1,0,0,0,1,0,1,0,0,1,0,1,0,1),
    array(1,0,0,0,1,0,0,1,0,0,1,0,1,0,1,0,0,0,1,1,0,0,0,1),
    array(1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,1,1,0,0,1,1,1,0,1),
    array(1,0,1,0,0,0,0,1,0,1,0,0,1,0,0,0,1,0,1,1,1,1,0,1),
    array(1,0,1,0,1,1,1,1,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1),
    array(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
);


La funcion de la caperucita sera casi la misma a la del lobo, lo que quiero es poder darle la opcion a que el lobo lo biusqye de manera propia si n necesirdad de intervencion del usuario ...

Castg!

OH! :o como es que lo queres hacer esto? como lo imprimis? lo vas actualizando con ajax? si es asi sera lentisimo! yo te recomiendo javascript!!

n3fisto

Bueno como lo imprimo aki esta por el moento esta es mi idea..

Código (php) [Seleccionar]
/*
Solo se usa para imprimir el laberinto.
*/
function print_lab($text) {
    global $array;
    echo "\n<div class=\"inner\">";
    echo "\n<span style=\"font-size: 14px; font-weight: bold;\">$text</span>";
    echo "\n<hr>";
    echo "\n<table align=\"center\" cellpadding=\"0\" cellspacing=\"0\">\n";
    foreach($array as $col=>$arr) {
        echo "<tr>\n";
        foreach($arr as $row=>$act) {
            switch($act) {
                case 1:
                    echo "<td width=\"15\" height=\"15\" title=\"($row,$col)\"></td>\n";
                    break;
                case 2:
                    echo "<td width=\"15\" height=\"15\" bgcolor=\"#FFFFFF\" title=\"($row,$col)\">";
                    echo "<img src=\"queso.jpg\" alt=\"Queso ($row,$col)\" style=\"width: 15px; height: 15px; border: 0;\">";
                    echo "</td>\n";
                    break;
                case 3:
                    echo "<td width=\"15\" height=\"15\" title=\"($row,$col)\">";
                    echo "<img src=\"camino.jpg\" alt=\"Ruta ($row,$col)\" style=\"width: 15px; height: 15px; border: 0;\">";
                    echo "</td>\n";
                    break;
                case 4:
                    echo "<td width=\"15\" height=\"15\" bgcolor=\"#FFFFFF\" title=\"($row,$col)\">";
                    echo "<img src=\"raton.jpg\" alt=\"Ratón ($row,$col)\" style=\"width: 15px; height: 15px; border: 0;\">";
                    echo "</td>\n";
                    break;
                default:
                    echo "<td width=\"15\" height=\"15\" bgcolor=\"#FFFFFF\" title=\"($row,$col)\"></td>\n";
                    break;
            }
        }
        echo "</tr>\n";
    }
    echo "</table>\n\n";
    echo "\n</div>";
}


Bueno la actualizacion es ahi mismo priemro muestra el laberinto original luego con los dos personajes y por ultimo la solucion como estoy por una solucion beta aun no uso Ajax quiero q este estable y poder hacerlo recien con ajax pero lo que mas pienso es como hacer el random no me ubico muy bien