He hecho este buscaminas, cueglo aquí el código para que me digais si hay alguna formas más senzilla de hacerlo:
Código
<?php $H= 5; //filas $V= 5; //Columnes $B= 7; //Bombas $total_casillas= $H*$V; //Guardo el total de las casillas para moverme luego en un for $vector; //declaramos el vector vacio //vector vacio pero con todas las posiciones function vector_v(&$vector,$total_casillas,$V){ $j=0; $p=0; for($i=1;$i <= $total_casillas;$i++){ $vector[$p][$j]= " "; //Primero dejamos las posiciones vacias para luego poner los asteriscos if($i % $V == 0){ //Si el modulo de $i con las columnas es 0 creamos otra fila y empezamos otra columna. $p++; $j=0; }else{ //Si no es l modulo segimos creand casillas de columna. $j++; } } return $vector; } //Esta funcion introduce las minas aleatoriamente en el vector function poner_m($B,$V,$H,&$vector){ $total=1;//usaremos esta variable para controlar que se escriban correctamente las minas. while($total <= $B){ if ($vector[$h][$v] == "*"){//Si en esa posición aleatoria hay un asterisco que no haga nada }else{//Si no hay un asterisco que lo ponga y que incremente el contador. $vector[$h][$v] = "*"; $total++; } } return $vector; } //Esta funcion pone los números que indican las posiciones de las minas function poner_n($H,$V,&$vector){ for($I=0;$I < $H;$I++){ //hacemos 2 fors que nos recorran el vector (columnas y filas) for($J=0;$J < $V;$J++){ //Tenemos 8 if's que miran las posiciones que rodean dónde nos encontremos if($vector[$I][$J+1]=="*"){ //miramos si delante hay un asterisco if($vector[$I][$J]=="*"){//Si lo hay, ahí no hacemos nada. }else{ $vector[$I][$J]=$vector[$I][$J]+1;//Si delante a avido un número incrementamos en la posicion q estamos. } }if($vector[$I][$J-1]=="*"){//A partir de aquí es lo mismo todo el rato pero cambiando la posicion. if($vector[$I][$J]=="*"){//Miramos detras, arriba,abajo,etc. }else{ $vector[$I][$J]=$vector[$I][$J]+1; } }if($vector[$I-1][$J-1]=="*"){ if($vector[$I][$J]=="*"){ }else{ $vector[$I][$J]=$vector[$I][$J]+1; } }if($vector[$I+1][$J-1]=="*"){ if($vector[$I][$J]=="*"){ }else{ $vector[$I][$J]=$vector[$I][$J]+1; } }if($vector[$I-1][$J]=="*"){ if($vector[$I][$J]=="*"){ }else{ $vector[$I][$J]=$vector[$I][$J]+1; } }if($vector[$I+1][$J]=="*"){ if($vector[$I][$J]=="*"){ }else{ $vector[$I][$J]=$vector[$I][$J]+1; } }if($vector[$I-1][$J+1]=="*"){ if($vector[$I][$J]=="*"){ }else{ $vector[$I][$J]=$vector[$I][$J]+1; } } if($vector[$I+1][$J+1]=="*"){ if($vector[$I][$J]=="*"){ }else{ $vector[$I][$J]=$vector[$I][$J]+1; } } } } return $vector; } //Llamamos a todas las funciones para que se genere el array con el juego hecho. vector_v($vector,$total_casillas,$V); poner_m($B,$V,$H,$vector); poner_n($H,$V,$vector); echo "<center>"; echo "<h1><b>JUEGO DEL BUSCAMINAS</b></h1>";//Presentamos el juego echo "Usamos $H filas, $V columnas y $B minas"; echo "<table border='3'cellpadding='20'>";//Mostramos la tabla con 2 fors que hacen las columnas y las filas for ($i=0;$i < $H; $i++){ echo "<tr>"; for($j=0;$j < $V;$j++){ echo "<td>".$vector[$i][$j]."</td>";//Aqui nos escribe el array dentro de la tabla } echo "</tr>"; } echo "</table>"; echo "</center>"; ?>
Saludos!!