From 36973a9662bbd2f79c9883f1e2ea6131caf916d7 Mon Sep 17 00:00:00 2001 From: Manuel Vergara Date: Sat, 13 Jan 2024 16:58:21 +0100 Subject: [PATCH] Add wargame decode --- .../descifrador_wargame.py | 144 ++++++++++++++++++ catch-all/README.md | 3 +- 2 files changed, 146 insertions(+), 1 deletion(-) create mode 100644 catch-all/02_scripts_descifrador_wargame/descifrador_wargame.py diff --git a/catch-all/02_scripts_descifrador_wargame/descifrador_wargame.py b/catch-all/02_scripts_descifrador_wargame/descifrador_wargame.py new file mode 100644 index 0000000..3aed070 --- /dev/null +++ b/catch-all/02_scripts_descifrador_wargame/descifrador_wargame.py @@ -0,0 +1,144 @@ +#!/usr/bin/env python3 +""" +Lo siento, acabo de ver "Juegos de Guerras" y me he emocionado. +Este programa descifra un código de números y letras mayúsculas aleatorio. +El código se descifra letra por letra y número por número. +Se utiliza random para generar los números y letras aleatorias, +para que tenga más emoción. +""" + +import os +import random + + +def code_clear(): + """ + Crear un código de números y letras mayúsculas aleatorio + """ + + os.system('clear') + + +def number_generate(): + """ + Genera un número aleatorio entre 0 y 9 + """ + + number_random = str(random.randint(0, 9)) + # number_random = chr(random.choice(string.ascii_letters + string.digits)) + + return number_random + + +def upper_letter_generate(): + """ + Genera una letra mayúscula aleatoria entre A y Z + """ + letter_random = chr(random.randint(65, 90)) + + return letter_random + + +def lower_letter_generate(): + """ + Genera una letra minúscula aleatoria entre a y z + """ + letter_random = chr(random.randint(97, 122)) + + return letter_random + + +def mecanografiar(msg): + for i in range(0, len(msg)): + code_clear() + print(msg[:i]) + os.system('sleep .1') + + +def descifrador(codigo): + """ + Descifra el código + """ + + numero_caracteres = len(codigo) + codigo_decode = " " * numero_caracteres + while True: + + for i in range(0, len(codigo)): + + if codigo[i] == codigo_decode[i]: + + codigo_decode = codigo_decode[:i] + \ + codigo[i] + codigo_decode[i + 1:] + + elif codigo[i].isalpha(): + + if codigo[i].isupper(): + + codigo_decode = codigo_decode[:i] + \ + upper_letter_generate() + codigo_decode[i + 1:] + else: + codigo_decode = codigo_decode[:i] + \ + lower_letter_generate() + codigo_decode[i + 1:] + + elif codigo[i].isdigit(): + + codigo_decode = codigo_decode[:i] + \ + number_generate() + codigo_decode[i + 1:] + + else: + + codigo_decode[i] = " " + + code_clear() + print(codigo_decode) + os.system('sleep .1') + if codigo_decode == codigo: + break + + code_clear() + return f"El código descifrado es: {codigo_decode}" + + +def mensaje_final(): + + os.system('sleep 3') + mecanografiar("Los mísiles nucleares se lanzarán en 5 segundos. ") + os.system('sleep 1') + + for i in range(5, 0, -1): + code_clear() + print(i) + os.system('sleep 1') + + mecanografiar("Los mísiles nucleares se han lanzado. ") + os.system('sleep 3') + + mecanografiar("Los mísiles nucleares han impactado. ") + os.system('sleep 1.5') + + mecanografiar("La humanidad ha sido destruida. ") + os.system('sleep 1.5') + + mecanografiar("Fin del programa. ") + os.system('sleep 1.5') + + mecanografiar("¡Hasta la vista, baby! 💋💋💋 ") + + +def main(): + """ + Función principal + """ + + code_clear() + print(("#"*36) + "BIENVENIDO AL DESCIFRADOR DE CÓDIGOS" + ("#"*36)) + CODIGO = input("Introduzca el código a descifrar: ") + + print(descifrador(CODIGO)) + + mensaje_final() + + +if __name__ == "__main__": + main() diff --git a/catch-all/README.md b/catch-all/README.md index 112357f..8418ccf 100644 --- a/catch-all/README.md +++ b/catch-all/README.md @@ -8,4 +8,5 @@ Aquí iré dejando scripts y ejercicios que se me ocurran, con lo que no hay un | Nombre | Descripción | Nivel | | ------------------------------------------------: | :--------------------------------------------- | :--------: | -| [Words Linux](./01_scripts_words_linux/README.md) | Scritp con el fichero: `/usr/share/dict/words` | intermedio | +| [Words Linux](./01_scripts_words_linux/README.md) | Script con el fichero: `/usr/share/dict/words` | intermedio | +| [Words Linux](./02_scripts_descifrador_wargame/) | Script descifrador de código al estilo wargame | intermedio |