Skip to content

Commit 9a32eab

Browse files
authored
Reto# 33 - python
1 parent 11de655 commit 9a32eab

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
r"""
2+
EJERCICIO:
3+
¡Disney ha presentado un montón de novedades en su D23!
4+
Pero... ¿Dónde está Mickey?
5+
Mickey Mouse ha quedado atrapado en un laberinto mágico
6+
creado por Maléfica.
7+
Desarrolla un programa para ayudarlo a escapar.
8+
Requisitos:
9+
1. El laberinto está formado por un cuadrado de 6x6 celdas.
10+
2. Los valores de las celdas serán:
11+
- ⬜️ Vacío
12+
- ⬛️ Obstáculo
13+
- 🐭 Mickey
14+
- 🚪 Salida
15+
Acciones:
16+
1. Crea una matriz que represente el laberinto (no hace falta
17+
que se genere de manera automática).
18+
2. Interactúa con el usuario por consola para preguntarle hacia
19+
donde se tiene que desplazar (arriba, abajo, izquierda o derecha).
20+
3. Muestra la actualización del laberinto tras cada desplazamiento.
21+
4. Valida todos los movimientos, teniendo en cuenta los límites
22+
del laberinto y los obtáculos. Notifica al usuario.
23+
5. Finaliza el programa cuando Mickey llegue a la salida.
24+
"""
25+
from os import system
26+
import keyboard as kb
27+
28+
maze = [['⬜', '🐭', '⬜', '⬜', '⬜', '⬜'],
29+
['⬜', '⬛', '⬛', '⬛', '⬜', '⬛'],
30+
['⬜', '⬜', '⬜', '⬜', '⬛', '⬜'],
31+
['⬜', '⬜', '⬛', '⬜', '⬜', '⬛'],
32+
['⬛', '⬜', '⬜', '⬛', '⬜', '🚪'],
33+
['⬜', '⬜', '⬜', '⬛', '⬜', '⬜']]
34+
mickey_pos = [0, 1]
35+
exit_door = [4, 5]
36+
37+
38+
def draw_maze(maze: list):
39+
system("cls")
40+
print("Press key arrow to move or Escape to quit. \n")
41+
for r in range(0, 6):
42+
for c in range(0, 6):
43+
print(maze[r][c], end="")
44+
print()
45+
46+
47+
def move_up(mickey_pos: list) -> list:
48+
if mickey_pos[0] > 0:
49+
if maze[mickey_pos[0] - 1][mickey_pos[1]] in ("⬜", "🚪"):
50+
mickey_pos = [mickey_pos[0] - 1, mickey_pos[1]]
51+
return mickey_pos
52+
53+
54+
def move_down(mickey_pos: list) -> list:
55+
if mickey_pos[0] < 5:
56+
if maze[mickey_pos[0] + 1][mickey_pos[1]] in ("⬜", "🚪"):
57+
mickey_pos = [mickey_pos[0] + 1, mickey_pos[1]]
58+
return mickey_pos
59+
60+
61+
def move_left(mickey_pos: list) -> list:
62+
if mickey_pos[1] > 0:
63+
if maze[mickey_pos[0]][mickey_pos[1] - 1] in ("⬜", "🚪"):
64+
mickey_pos = [mickey_pos[0], mickey_pos[1] - 1]
65+
return mickey_pos
66+
67+
68+
def move_right(mickey_pos: list) -> list:
69+
if mickey_pos[1] < 5:
70+
if maze[mickey_pos[0]][mickey_pos[1] + 1] in ("⬜", "🚪"):
71+
mickey_pos = [mickey_pos[0], mickey_pos[1] + 1]
72+
return mickey_pos
73+
74+
75+
def move(pressed_key: str, mickey_pos: list) -> list:
76+
77+
match pressed_key:
78+
case 'flecha abajo':
79+
mickey_pos = move_down(mickey_pos)
80+
case 'flecha izquierda':
81+
mickey_pos = move_left(mickey_pos)
82+
case 'flecha derecha':
83+
mickey_pos = move_right(mickey_pos)
84+
case 'flecha arriba':
85+
mickey_pos = move_up(mickey_pos)
86+
case 'esc':
87+
mickey_pos = []
88+
return mickey_pos
89+
90+
91+
while True:
92+
draw_maze(maze)
93+
pressed_key = kb.read_event()
94+
95+
if pressed_key.event_type == "down":
96+
mickey_prev = mickey_pos.copy()
97+
mickey_pos = move(pressed_key.name, mickey_pos)
98+
if not mickey_pos:
99+
break
100+
maze[mickey_prev[0]][mickey_prev[1]] = "⬜"
101+
maze[mickey_pos[0]][mickey_pos[1]] = "🐭"
102+
if mickey_pos == exit_door:
103+
print("Mickey found the door!!! You Won!!!")
104+
break

0 commit comments

Comments
 (0)