Add wargame decode

This commit is contained in:
Manuel Vergara 2024-01-13 16:58:21 +01:00
parent 8109c2fe30
commit 36973a9662
2 changed files with 146 additions and 1 deletions

View File

@ -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()

View File

@ -8,4 +8,5 @@ Aquí iré dejando scripts y ejercicios que se me ocurran, con lo que no hay un
| Nombre | Descripción | Nivel | | 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 |