Buscaminas en php!!

Iniciado por kodeone, 14 Enero 2011, 23:55 PM

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

kodeone

Buenas!

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) [Seleccionar]

<?php
$H5 //filas
$V5 //Columnes
$B7 //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]= "&nbsp"//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){
$h=rand(0,$H-1);//creamos un numero aleatorio para movernos por las filas
$v=rand(0,$V-1);//creamos un numero para movernos por las columnas.
            
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!!

Shell Root

Pero y entonces, como se juega?
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

kodeone

A ver, es una "especie" de buscaminas que es como si te saliera la partida hecha xDD, es raro de explicar. Aún no domino como para hacer un juego con el que poder interaccionar con php. Es un ejercicio de clase que nos pedia eso. Cada vez que se le da a f5 es como una partida distinta gracias al rand.

Saludos!