Skip to content

Commit f4543de

Browse files
committed
#25 - Python
1 parent 5772dc5 commit f4543de

File tree

1 file changed

+61
-0
lines changed
  • Retos/Reto #25 - EL CÓDIGO KONAMI [Media]/python

1 file changed

+61
-0
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
"""
2+
Crea un programa que detecte cuando el famoso "Código Konami" se ha
3+
introducido correctamente desde el teclado.
4+
Si sucede esto, debe notificarse mostrando un mensaje en la terminal.
5+
"""
6+
7+
from pynput.keyboard import Key, Listener, Controller
8+
9+
KONAMI_CODE = [
10+
Key.up, Key.up, Key.down, Key.down,
11+
Key.left, Key.right, Key.left, Key.right,
12+
"a", "b"
13+
]
14+
15+
press_keys = []
16+
17+
def on_press(key):
18+
"""
19+
Maneja cada pulsación registrada por el listener.
20+
21+
Convierte la tecla a un tipo comparable (string o Key) y la almacena
22+
en la lista de pulsaciones. Comprueba si las últimas teclas ingresadas
23+
coinciden con el código Konami; de ser así, imprime un mensaje y
24+
simula la pulsación de la tecla ESC para detener el programa.
25+
26+
Args:
27+
key: objeto Key proporcionado por pynput que representa la tecla pulsada.
28+
"""
29+
30+
global press_keys
31+
keyboard = Controller()
32+
33+
try:
34+
k = key.char
35+
except AttributeError:
36+
k = key
37+
38+
press_keys.append(k)
39+
40+
if press_keys[-len(KONAMI_CODE):] == KONAMI_CODE:
41+
print("¡Codigo KONAMI detectado!")
42+
keyboard.press(Key.esc)
43+
keyboard.release(Key.esc)
44+
45+
def on_release(key):
46+
"""
47+
Maneja el evento de liberación de tecla.
48+
49+
Si se libera la tecla ESC, imprime un mensaje y devuelve False para
50+
detener el listener.
51+
52+
Args:
53+
ke
54+
if key == Key.esc:
55+
print("\nDeteniendo...")
56+
return False
57+
"""
58+
59+
with Listener(on_press=on_press, on_release=on_release) as listener:
60+
print("Escuchando pulsaciones del teclado. Presiona 'esc' para salir.")
61+
listener.join()

0 commit comments

Comments
 (0)