Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: n3fisto en 17 Marzo 2010, 16:21 PM

Título: Laberinto en Php.
Publicado por: n3fisto en 17 Marzo 2010, 16:21 PM
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 ...
Título: Re: Laberinto en Php.
Publicado por: Castg! en 19 Marzo 2010, 14:03 PM
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!!
Título: Re: Laberinto en Php.
Publicado por: n3fisto en 20 Marzo 2010, 15:26 PM
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