Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: kodeone en 14 Enero 2011, 23:55 pm



Título: Buscaminas en php!!
Publicado por: kodeone en 14 Enero 2011, 23:55 pm
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
  1. <?php
  2. $H= 5; //filas
  3. $V= 5; //Columnes
  4. $B= 7; //Bombas
  5. $total_casillas= $H*$V; //Guardo el total de las casillas para moverme luego en un for
  6. $vector; //declaramos el vector vacio
  7.  
  8.  
  9. //vector vacio pero con todas las posiciones
  10. function vector_v(&$vector,$total_casillas,$V){
  11. $j=0;
  12. $p=0;
  13. for($i=1;$i <= $total_casillas;$i++){
  14. $vector[$p][$j]= "&nbsp"; //Primero dejamos las posiciones vacias para luego poner los asteriscos
  15. if($i % $V == 0){ //Si el modulo de $i con las columnas es 0 creamos otra fila y empezamos otra columna.
  16. $p++;
  17. $j=0;
  18. }else{ //Si no es l modulo segimos creand casillas de columna.
  19. $j++;
  20. }
  21. }
  22.  return $vector;
  23. }
  24.  
  25.  
  26.  
  27. //Esta funcion introduce las minas aleatoriamente en el vector
  28. function poner_m($B,$V,$H,&$vector){
  29. $total=1;//usaremos esta variable para controlar que se escriban correctamente las minas.
  30. while($total <= $B){
  31. $h=rand(0,$H-1);//creamos un numero aleatorio para movernos por las filas
  32. $v=rand(0,$V-1);//creamos un numero para movernos por las columnas.
  33.            if ($vector[$h][$v] == "*"){//Si en esa posición aleatoria hay un asterisco que no haga nada
  34.  
  35. }else{//Si no hay un asterisco que lo ponga y que incremente el contador.
  36. $vector[$h][$v] = "*";
  37. $total++;
  38. }
  39. }
  40. return $vector;
  41. }
  42.  
  43. //Esta funcion pone los números que indican las posiciones de las minas
  44. function poner_n($H,$V,&$vector){
  45.  
  46. for($I=0;$I < $H;$I++){ //hacemos 2 fors que nos recorran el vector (columnas y filas)
  47. for($J=0;$J < $V;$J++){ //Tenemos 8 if's que miran las posiciones que rodean dónde nos encontremos
  48. if($vector[$I][$J+1]=="*"){ //miramos si delante hay un asterisco
  49. if($vector[$I][$J]=="*"){//Si lo hay, ahí no hacemos nada.
  50.  
  51. }else{
  52. $vector[$I][$J]=$vector[$I][$J]+1;//Si delante a avido un número incrementamos en la posicion q estamos.
  53. }
  54. }if($vector[$I][$J-1]=="*"){//A partir de aquí es lo mismo todo el rato pero cambiando la posicion.
  55. if($vector[$I][$J]=="*"){//Miramos detras, arriba,abajo,etc.
  56.  
  57. }else{
  58. $vector[$I][$J]=$vector[$I][$J]+1;
  59. }
  60. }if($vector[$I-1][$J-1]=="*"){
  61. if($vector[$I][$J]=="*"){
  62.  
  63. }else{
  64. $vector[$I][$J]=$vector[$I][$J]+1;
  65. }
  66. }if($vector[$I+1][$J-1]=="*"){
  67. if($vector[$I][$J]=="*"){
  68.  
  69. }else{
  70. $vector[$I][$J]=$vector[$I][$J]+1;
  71. }
  72.  
  73. }if($vector[$I-1][$J]=="*"){
  74. if($vector[$I][$J]=="*"){
  75.  
  76. }else{
  77. $vector[$I][$J]=$vector[$I][$J]+1;
  78. }
  79. }if($vector[$I+1][$J]=="*"){
  80. if($vector[$I][$J]=="*"){
  81.  
  82. }else{
  83. $vector[$I][$J]=$vector[$I][$J]+1;
  84. }
  85. }if($vector[$I-1][$J+1]=="*"){
  86. if($vector[$I][$J]=="*"){
  87. }else{
  88. $vector[$I][$J]=$vector[$I][$J]+1;
  89. }
  90. }
  91. if($vector[$I+1][$J+1]=="*"){
  92. if($vector[$I][$J]=="*"){
  93.  
  94. }else{
  95. $vector[$I][$J]=$vector[$I][$J]+1;
  96. }
  97. }
  98. }
  99. }
  100. return $vector;
  101. }
  102.  
  103.  
  104. //Llamamos a todas las funciones para que se genere el array con el juego hecho.
  105. vector_v($vector,$total_casillas,$V);
  106. poner_m($B,$V,$H,$vector);
  107. poner_n($H,$V,$vector);
  108.  
  109. echo "<center>";
  110. echo "<h1><b>JUEGO DEL BUSCAMINAS</b></h1>";//Presentamos el juego
  111. echo "Usamos $H filas, $V columnas y $B minas";
  112.  
  113. echo "<table border='3'cellpadding='20'>";//Mostramos la tabla con 2 fors que hacen las columnas y las filas
  114. for ($i=0;$i < $H; $i++){
  115. echo "<tr>";
  116. for($j=0;$j < $V;$j++){
  117. echo "<td>".$vector[$i][$j]."</td>";//Aqui nos escribe el array dentro de la tabla
  118. }
  119. echo "</tr>";
  120. }
  121. echo "</table>";
  122.  
  123. echo "</center>";
  124. ?>
  125.  

Saludos!!


Título: Re: Buscaminas en php!!
Publicado por: Shell Root en 15 Enero 2011, 05:26 am
Pero y entonces, como se juega?


Título: Re: Buscaminas en php!!
Publicado por: kodeone en 15 Enero 2011, 17:45 pm
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!