Skip to content

Commit 39a91e8

Browse files
authored
Merge pull request #5547 from miguelex/main
#33 - php
2 parents 45d5415 + 512c6ae commit 39a91e8

File tree

1 file changed

+129
-0
lines changed

1 file changed

+129
-0
lines changed
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
<?php
2+
define('SIZE', 6);
3+
4+
function generarLaberinto() {
5+
$laberinto = [];
6+
7+
// Laberinto vacio
8+
for ($i = 0; $i < SIZE; $i++) {
9+
for ($j = 0; $j < SIZE; $j++) {
10+
$laberinto[$i][$j] = '⬜️';
11+
}
12+
}
13+
14+
// obstáculos
15+
$numObstaculos = rand(5, 10);
16+
17+
for ($i = 0; $i < $numObstaculos; $i++) {
18+
do {
19+
$x = rand(0, SIZE - 1);
20+
$y = rand(0, SIZE - 1);
21+
} while ($laberinto[$x][$y] !== '⬜️');
22+
23+
$laberinto[$x][$y] = '⬛️';
24+
}
25+
26+
// Mickey
27+
do {
28+
$mickeyX = rand(0, SIZE - 1);
29+
$mickeyY = rand(0, SIZE - 1);
30+
} while ($laberinto[$mickeyX][$mickeyY] !== '⬜️');
31+
32+
$laberinto[$mickeyX][$mickeyY] = '🐭';
33+
34+
// salida
35+
do {
36+
$salidaX = rand(0, SIZE - 1);
37+
$salidaY = rand(0, SIZE - 1);
38+
} while ($laberinto[$salidaX][$salidaY] !== '⬜️');
39+
40+
$laberinto[$salidaX][$salidaY] = '🚪';
41+
42+
return [$laberinto, $mickeyX, $mickeyY, $salidaX, $salidaY];
43+
}
44+
45+
function mostrarLaberintoCiego($laberinto, $mickeyX, $mickeyY) {
46+
for ($i = 0; $i < SIZE; $i++) {
47+
for ($j = 0; $j < SIZE; $j++) {
48+
if ($i === $mickeyX && $j === $mickeyY) {
49+
echo '🐭 ';
50+
} elseif (abs($i - $mickeyX) <= 1 && abs($j - $mickeyY) <= 1) {
51+
echo $laberinto[$i][$j] . ' ';
52+
} else {
53+
echo ''; // Celda desconocida
54+
}
55+
}
56+
echo PHP_EOL;
57+
}
58+
}
59+
60+
61+
function mostrarLaberinto($laberinto) {
62+
foreach ($laberinto as $fila) {
63+
echo implode(' ', $fila) . PHP_EOL;
64+
}
65+
}
66+
67+
function moverMickey($direccion, &$mickeyX, &$mickeyY, &$laberinto, $salidaX, $salidaY) {
68+
$nuevaX = $mickeyX;
69+
$nuevaY = $mickeyY;
70+
71+
switch ($direccion) {
72+
case 'a':
73+
$nuevaX--;
74+
break;
75+
case 'b':
76+
$nuevaX++;
77+
break;
78+
case 'i':
79+
$nuevaY--;
80+
break;
81+
case 'd':
82+
$nuevaY++;
83+
break;
84+
default:
85+
echo "Dirección no válida. Intenta de nuevo.\n";
86+
return false;
87+
}
88+
89+
90+
if ($nuevaX < 0 || $nuevaX >= SIZE || $nuevaY < 0 || $nuevaY >= SIZE) {
91+
echo "¡No puedes salirte del laberinto!\n";
92+
return false;
93+
}
94+
95+
if ($laberinto[$nuevaX][$nuevaY] === '⬛️') {
96+
echo "¡Hay un obstáculo en esa dirección!\n";
97+
return false;
98+
}
99+
100+
$laberinto[$mickeyX][$mickeyY] = ($mickeyX === $salidaX && $mickeyY === $salidaY) ? '🚪' : '⬜️'; // Mantener la puerta si estaba ahí
101+
$mickeyX = $nuevaX;
102+
$mickeyY = $nuevaY;
103+
$laberinto[$mickeyX][$mickeyY] = '🐭';
104+
105+
if ($mickeyX === $salidaX && $mickeyY === $salidaY) {
106+
return true;
107+
}
108+
109+
return false;
110+
}
111+
112+
function jugar() {
113+
list($laberinto, $mickeyX, $mickeyY, $salidaX, $salidaY) = generarLaberinto();
114+
115+
while (true) {
116+
mostrarLaberintoCiego($laberinto, $mickeyX, $mickeyY);
117+
118+
echo "¿Hacia dónde te gustaría mover a Mickey? (a=arriba, b=abajo, i=izquierda, d=derecha): ";
119+
$direccion = trim(fgets(STDIN));
120+
121+
if (moverMickey($direccion, $mickeyX, $mickeyY, $laberinto, $salidaX, $salidaY)) {
122+
echo "¡Felicidades! Mickey ha llegado a la salida.\n";
123+
mostrarLaberinto($laberinto);
124+
break;
125+
}
126+
}
127+
}
128+
129+
jugar();

0 commit comments

Comments
 (0)