Tema: PhP minas
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/08/2010, 18:08
Garrisonx
 
Fecha de Ingreso: febrero-2010
Mensajes: 17
Antigüedad: 15 años
Puntos: 0
PhP minas



este problemilla digamos que es por orgullo propio a ver si ustedes pueden detectar el error.

tengo un form que me recoge el numero de filas, columnas y minas, para el clasico jueguillo de minas solo que me lo va apintar resuelto.
entonces obtengo los valores del form por get
Código PHP:
$filas=$_GET['filas'];
$columnas=$_GET['columnas'];
$minas=$_GET['minas']; 
despues creo mi vector y lo inicializo todo en 0 tomando en cuentas que hay menos minas que espacios
Código PHP:
if($minas<($filas*$columnas)){
    
//Inicializamos el arreglo
    
for($x=0;$x<$filas;$x++){
            for(
$y=0;$y<$columnas;$y++){
                
$arreglo[$x][$y]=0;
            }
        } 
despues genero las minas aleatoriamente asignandole un -1 si es mina
Código PHP:
while($z<$minas){
             
$random1=rand(0,$filas-1);
             
$random2=rand(0,$columnas-1);

          if(
$arreglo[$random1][$random2]!="-1"){
              
$arreglo[$random1][$random2]="-1";
              
$z=$z+1;
          }
        } 
aqui es donde no puedo creo un doble for para ir navegando entre cada posicion del arreglo y estando en esa posicion anido otro doble for para buscar minas en las 8 posiciones adjuntas llendo de columna -1 a columna +1 y de fila -1 a fila +1 y donde encuentre -1 incrementar un contador y asignar el valor de ese contador al final al valor del arreglo en la posicion original :P no se si se entendio
Código PHP:
for($x=0;$x<$filas;$x++){ //por cada fila
            
for($y=0;$y<$columnas;$y++){//por cada columna
                
if($arreglo[$x][$y]!=-1){
                     
//verificamos las celdas adyacentes
                    
for($x=($filas-1);$x<($filas+1);$x++){ //por cada fila
                        
for($y=($columnas-1);$y<($columnas+1);$y++){//por cada columna

                                    
if($arreglo[$x][$y]==-1)
                                        
$var=$var+1;
                            }
                         
                        }
                     
$arreglo[$x][$y]=$var;
                 }
//Fin del if
            
}
         } 


Código PHP:
echo "<fieldset>";
    echo 
"<legend>Resultado</legend>";
    
//Imprimimos el arreglo
    
for($x=0;$x<$filas;$x++){
            for(
$y=0;$y<$columnas;$y++){
                echo 
$arreglo[$x][$y]. " - ";
            }
            echo
"<br/>";
        }
    echo 
"</fieldset>"
aqui imprimo el vector final


ya puse if(isset($arreglo[$x][$y]))
antes de evaluar si es igual a -1 pero de cualquier manera aunque lo quite no me marca error al parecer en php no hay desbordamiento de arreglos o no se que onda creo que tengo un error en el momento de asignar el valor de $var al arreglo en la posicion original que opinan?

Última edición por Garrisonx; 31/08/2010 a las 18:17