Un juego de anagramas en Python

Idea de proyecto:
El objetivo de este proyecto es crear un juego en python en el que al usuario se le presenta el anagrama de una palabra y tiene que adivinar la palabra correcta en un número limitado de intentos.

Características del proyecto: 

  1. El usuario tiene un número fijo de intentos para adivinar la palabra correcta. El número de intentos depende de la longitud de la palabra.
  2. Después de cada intento incorrecto, el usuario recibe una pista de la palabra correcta.
  3. Si el usuario no puede adivinar la palabra correcta dentro del número fijo de intentos, se muestra la palabra correcta y el juego pasa a la siguiente palabra.
  4. Ctrl+C o Ctrl+D sale del juego.

Implementación: 
este tutorial solo es válido para sistemas basados ​​en Linux. Este tutorial está escrito en un sistema Linux Mint 17.1. Para la implementación en otros sistemas Linux (Redhat, Arch), consulte una nota especial al final de este tutorial. 

En casi todos los sistemas basados ​​en Linux hay un archivo ubicado en la ubicación del directorio “/usr/share/dict/” con diferentes nombres como “cracklib-small” (sistemas basados ​​en Ubuntu), “palabras” (Redhat, Arch) que contiene palabras del diccionario y, a menudo, muchas aplicaciones las utilizan para implementar funciones como la «revisión ortográfica».

En este proyecto, usaré el mismo archivo para crear un juego de anagramas. 

La lectura del archivo puede proporcionarnos todas las palabras necesarias para el juego. Las palabras en el archivo se separan con una nueva línea, por lo que al leer el archivo debemos dividir las palabras en función del carácter de nueva línea para obtener palabras individuales. El código para el mismo se vería así: 

Python3

loc='/usr/share/dict/cracklib-small'
with open(loc) as f:
content=f.read().split('\n')
f.close()

El archivo también contiene palabras como «zoo’s», pero no queremos esas palabras en nuestro juego, así que podemos omitirlas. Para evitar que el juego sea demasiado simple, decidí omitir también las palabras de menos de 5, pero este paso es opcional y se puede omitir. El código para el mismo se ve así:

Python3

l=len(content)
words=[]
for i in range(0,l):
    if '\'' in content[i] or len(content[i])<5:
    continue
words.append(content[i])

El archivo también contiene palabras como «2nd, 3rd» al comienzo del archivo. Para evitar que aparezcan en nuestro juego, los omitimos:

Python3

words=words[1:]
d=len(words)
words=words[:d]

Finalmente, las «palabras» contienen todas las palabras que necesitamos para que el juego continúe.
Podemos elegir una palabra específica para una ronda particular del juego: 

word=words[random.randint(0,d)]

La palabra se elegiría al azar de la lista de palabras creadas.
Para crear el anagrama de la palabra necesitamos barajar los caracteres. Esto se puede hacer por:

Python3

shuffle=list(word)
random.shuffle(shuffle)

Si la longitud de la palabra elegida para la ronda es más de 7, el usuario obtiene 7 intentos; de lo contrario, el número de intentos es 5.

Python3

if len(word)>7:
    chances=7
else:
    chances=5
    tries=0

La variable «intentos» realiza un seguimiento del número de intentos realizados por el usuario. Lo inicializamos a cero. 
Durante cada intento del usuario, tomamos su entrada y la comparamos con la palabra correcta. Si coinciden, felicitamos al usuario y le presentamos el siguiente anagrama; de lo contrario, le proporcionamos una pista.

Para generar una pista para una palabra en particular, elegimos dos enteros aleatorios entre 0 y la longitud de la palabra.

Python3

t1=random.randint(0,len(word))
t2=random.randint(0,len(word))

Mostramos los caracteres correctos en estas dos posiciones t1 y t2 y en todas las demás posiciones mostramos “.”.

Python3

hint=""
for i in range(0,len(word)):
    if i==t1 or i==t2:
        hint=hint+word[i]
    else:
        hint=hint+"."
print (hint)

Si el número de intentos = número de oportunidades, mostramos la palabra correcta y el juego continúa.

Python3

if tries==chances:
    print ("The answer was "+word)

Nota especial: para que el código sea lo más independiente posible de la plataforma, podemos elegir la ubicación del archivo dinámicamente usando el módulo de plataforma de python.

Python3

os=platform.dist()[0]
if os=='LinuxMint' or os=='Ubuntu':
    loc='/usr/share/dict/cracklib-small'
else:
    loc='/usr/share/dict/words'

Herramientas de software requeridas: El juego se puede implementar en Python utilizando módulos de plataforma y aleatorios.
 
Esta idea es aportada por Subham. Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo y enviarlo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
 
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *