Advertisement
Guest User

Guarro cerdo puerco marrano perro

a guest
Jan 23rd, 2020
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.33 KB | None | 0 0
  1. <html>
  2.  
  3. <head>
  4. <title>
  5. Simulador de paloma mensajera
  6. </title>
  7. <link rel="stylesheet" type="text/css" href="common.css" />
  8. <style type="text/css">
  9. div.map {
  10. float: left;
  11. text-align: center;
  12. border: 1px solid #666;
  13. background-color: #fcfcfc;
  14. margin: 5px;
  15. padding: 1em;
  16. }
  17.  
  18. span.casa,
  19. span.paloma {
  20. font-weight: bold;
  21. color: red;
  22. }
  23.  
  24. span.aire {
  25. color: blue;
  26. }
  27. </style>
  28. </head>
  29.  
  30. <body>
  31.  
  32. <h1>
  33. <?php
  34.  
  35. $tamañoMapa = 10;
  36.  
  37. # Posicionar la paloma
  38. class Paloma
  39. {
  40. private $palomaX;
  41. private $palomaY;
  42.  
  43. public function crearPalomaX($posicion)
  44. {
  45. $this->palomaX = $posicion;
  46. }
  47.  
  48. public function crearPalomaY($posicion)
  49. {
  50. $this->palomaY = $posicion;
  51. }
  52.  
  53. public function posicionX()
  54. {
  55. return $this->palomaX;
  56. }
  57.  
  58. public function posicionY()
  59. {
  60. return $this->palomaY;
  61. }
  62.  
  63. public function moverPaloma($casaY, $casaX)
  64. {
  65. if ($this->palomaX < $casaX) {
  66. $this->palomaX++;
  67. } elseif ($this->palomaX > $casaX) {
  68. $this->palomaX--;
  69. }
  70. if ($this->palomaY < $casaY) {
  71. $this->palomaY++;
  72. } elseif ($this->palomaY > $casaY) {
  73. $this->palomaY--;
  74. }
  75. }
  76. }
  77.  
  78. $paloma1 = new Paloma();
  79. $paloma2 = new Paloma();
  80.  
  81. do {
  82. $casaX = rand(0, $tamañoMapa - 1);
  83. $casaY = rand(0, $tamañoMapa - 1);
  84. $paloma1->crearPalomaX(rand(0, $tamañoMapa - 1));
  85. $paloma1->crearPalomaY(rand(0, $tamañoMapa - 1));
  86. $paloma2->crearPalomaX(rand(0, $tamañoMapa - 1));
  87. $paloma2->crearPalomaY(rand(0, $tamañoMapa - 1));
  88.  
  89. } while ((abs($casaX - $paloma1->posicionX()) < $tamañoMapa / 2) && (abs($casaY - $paloma1->posicionY()) < $tamañoMapa / 2) && (abs($casaX - $paloma2->posicionX()) < $tamañoMapa / 2) && (abs($casaY - $paloma2->posicionY()) < $tamañoMapa / 2));
  90. # Con la línea precedente nos aseguramos de que la posición inicial de la paloma
  91. # y su casa disten como mínimo la mitad del mapa. La función abs() devuelve el valor
  92. # absoluto, esto es, la cifra sin signo.
  93.  
  94. do {
  95. $paloma1->moverPaloma($casaY, $casaX);
  96. $paloma2->moverPaloma($casaY, $casaX);
  97. #Mostrar el mapa actual
  98. echo '<div class="map" style="width: ' . $tamañoMapa . 'em;"><pre>';
  99. # Recuérdese que con la etiqueta <pre> los saltos de línea que haya se reflejan en la pantalla
  100.  
  101. for ($y = 0; $y < $tamañoMapa; $y++) {
  102. for ($x = 0; $x < $tamañoMapa; $x++) {
  103. if ($x == $casaX && $y == $casaY) {
  104. echo '<span class="casa">+</span>'; //Casa
  105. } elseif ($x == $paloma1->posicionX() && $y == $paloma1->posicionY()) {
  106. echo '<span class="paloma">%</span>'; #Paloma
  107. } elseif ($x == $paloma2->posicionX() && $y == $paloma2->posicionY()) {
  108. echo '<span class="paloma">%</span>'; #Paloma
  109. } else {
  110. echo '<span class="aire">.</span>'; #Aire
  111. }
  112.  
  113. echo ($x != $tamañoMapa - 1) ? " " : ""; #siempre se añade un carácter de espacio en cada celda, salvo al final.
  114. }
  115.  
  116. echo "\n"; #Salto de línea. como se está dentro de un <pre>, se reflejará en la pantalla.
  117. }
  118.  
  119. echo "<pre>palomax=".$paloma1->posicionX()." palomaY=".$paloma1->posicionY()."\n";
  120. echo "paloma2x=".$paloma2->posicionX()." paloma2Y=".$paloma2->posicionY()."</div>\n";
  121. } while (($paloma1->posicionX() != $casaX || $paloma1->posicionY() != $casaY) || ($paloma2->posicionX() != $casaX || $paloma2->posicionY() != $casaY));
  122.  
  123. ?>
  124.  
  125. </h1>
  126.  
  127. </body>
  128.  
  129. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement