Foro de elhacker.net

Programación => 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
  1. <?php
  2.  
  3. //Array que devolverá el laberinto
  4. $array = array(
  5.    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),
  6.    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),
  7.    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),
  8.    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),
  9.    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),
  10.    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),
  11.    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),
  12.    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),
  13.    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),
  14.    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),
  15.    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),
  16.    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),
  17.    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),
  18.    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),
  19.    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),
  20.    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),
  21.    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),
  22.    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),
  23.    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),
  24.    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),
  25.    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),
  26.    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),
  27.    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),
  28.    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)
  29. );
  30.  
  31. /*
  32. Esta función ubica aleatoriamente (o a través del parámetro $p)
  33. la caperusita en el laberinto. Además, guarda estas posiciones en las
  34. variables $qx y $qy
  35. */
  36. function caperusita(&$array,$p = NULL)
  37. {
  38.    global $qx,$qy;
  39.    if(isset($p) && strlen($p) >= 3) {
  40.        $p = explode(',',$p);
  41.        $t[1] = $p[0];
  42.        $t[0] = $p[1];
  43.    } else {
  44.        $d=count($array);
  45.        $t[0]=rand(0,($d-1));
  46.        $t[1]=rand(0,($d-1));    
  47.    }
  48.    if($array[$t[0]][$t[1]] == 0 && isset($array[$t[0]][$t[1]])) {
  49.        $array[$t[0]][$t[1]] = 2;
  50.        $qx = $t[1];
  51.        $qy = $t[0];
  52.        return TRUE;
  53.    } else {
  54.        return caperusita($array);
  55.    }
  56. }


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

Código
  1. //Array que devolverá el laberinto
  2. $array = array(
  3.    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),
  4.    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),
  5.    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),
  6.    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),
  7.    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),
  8.    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),
  9.    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),
  10.    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),
  11.    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),
  12.    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),
  13.    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),
  14.    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),
  15.    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),
  16.    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),
  17.    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),
  18.    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),
  19.    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),
  20.    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),
  21.    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),
  22.    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),
  23.    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),
  24.    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),
  25.    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),
  26.    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)
  27. );


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
  1. /*
  2. Solo se usa para imprimir el laberinto.
  3. */
  4. function print_lab($text) {
  5.    global $array;
  6.    echo "\n<div class=\"inner\">";
  7.    echo "\n<span style=\"font-size: 14px; font-weight: bold;\">$text</span>";
  8.    echo "\n<hr>";
  9.    echo "\n<table align=\"center\" cellpadding=\"0\" cellspacing=\"0\">\n";
  10.    foreach($array as $col=>$arr) {
  11.        echo "<tr>\n";
  12.        foreach($arr as $row=>$act) {
  13.            switch($act) {
  14.                case 1:
  15.                    echo "<td width=\"15\" height=\"15\" title=\"($row,$col)\"></td>\n";
  16.                    break;
  17.                case 2:
  18.                    echo "<td width=\"15\" height=\"15\" bgcolor=\"#FFFFFF\" title=\"($row,$col)\">";
  19.                    echo "<img src=\"queso.jpg\" alt=\"Queso ($row,$col)\" style=\"width: 15px; height: 15px; border: 0;\">";
  20.                    echo "</td>\n";
  21.                    break;
  22.                case 3:
  23.                    echo "<td width=\"15\" height=\"15\" title=\"($row,$col)\">";
  24.                    echo "<img src=\"camino.jpg\" alt=\"Ruta ($row,$col)\" style=\"width: 15px; height: 15px; border: 0;\">";
  25.                    echo "</td>\n";
  26.                    break;
  27.                case 4:
  28.                    echo "<td width=\"15\" height=\"15\" bgcolor=\"#FFFFFF\" title=\"($row,$col)\">";
  29.                    echo "<img src=\"raton.jpg\" alt=\"Ratón ($row,$col)\" style=\"width: 15px; height: 15px; border: 0;\">";
  30.                    echo "</td>\n";
  31.                    break;
  32.                default:
  33.                    echo "<td width=\"15\" height=\"15\" bgcolor=\"#FFFFFF\" title=\"($row,$col)\"></td>\n";
  34.                    break;
  35.            }
  36.        }
  37.        echo "</tr>\n";
  38.    }
  39.    echo "</table>\n\n";
  40.    echo "\n</div>";
  41. }

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