Hola, estoy programando un juego simple de ahorcado para un proyecto un poco mas grande, donde levanta las palabras desde un json, elige una con un random y luego va comparando las letras que se ingresan mediante un boton, el problema es que al a hora de comparar si la letra existe en la palabra el pilas pone la condicion como true pero tambien entra al else, en el else programé para que se carge en pantalla una imagen del ahorcado, no entiendo porque ingrese la letra que ingrese siempre entra al if y al else, cuando solo deberia entrar a uno, cabe destacar que luego que le agregué las funciones para setear la escena (ya que para empezar a jugar se selecciona desde un menu principal) esto empezo a fallar, si el ahorcado lo hago como un solo archivo .py sin cambio de escena ni nada, funciona bien.
import pilas
import json
import random
import menu
class Ahorcado(pilas.escena.Base):
def __init__(self):
pilas.escena.Base.__init__(self)
def iniciar(self):
#Setea la escena del juego
pilas.fondos.Color(pilas.colores.gris)
ahorcado = pilas.actores.Texto("Ahorcado")
ahorcado.y = 350
#Cargo las imagenes del Ahorcado
imagen1 = pilas.imagenes.cargar('imagenes/ahorcado1.png')
imagen2 = pilas.imagenes.cargar('imagenes/ahorcado2.png')
imagen3 = pilas.imagenes.cargar('imagenes/ahorcado3.png')
imagen4 = pilas.imagenes.cargar('imagenes/ahorcado4.png')
imagen5 = pilas.imagenes.cargar('imagenes/ahorcado5.png')
imagen6 = pilas.imagenes.cargar('imagenes/ahorcado6.png')
lista_imagen = [imagen1,imagen2,imagen3,imagen4,imagen5,imagen6]
#Cargo las palabras
archivo_pal = open("historia.json","r")
lista_pal = json.load(archivo_pal)
archivo_pal.close()
#Elijo una palabra
palabra = random.choice(lista_pal)
palabra = palabra.upper()
#Grafico los espacios en pantalla
if (len(palabra) > 20):
x = -250
else:
x = -100
y = -250
lista_coord = []
for i in palabra:
if (i != " "):
i = pilas.actores.Texto('_')
x = x + 20
i.x = x
i.y = y
lista_coord.append((i,x,y))
else:
i = pilas.actores.Texto(' ')
x = x + 20
i.x = x
i.y = y
lista_coord.append((i,x,y))
#Seteo el Boton para ingresar letras
entrada = pilas.interfaz.IngresoDeTexto(ancho = 100,x = -430, y=-350)
boton = pilas.interfaz.Boton("Enviar")
boton.x = -350
boton.y = -353
#Comparo la letra enviada con la palabra
def enviar():
letra = str(entrada.texto)
letra = letra.upper()
if (palabra.count(letra) >= 1):
for i in range(len(palabra)):
if (palabra[i] == letra):
letraok = pilas.actores.Texto(letra)
letraok.x = lista_coord[i][1]
letraok.y = lista_coord[i][2]
else: # esto no funciona
error = pilas.actores.Actor(lista_imagen.pop(0))
error.x = -50
error.y = 100
if (lista_imagen == []):
game_over = pilas.actores.Texto("PERDISTE")
game_over.y = -100
boton.conectar(enviar)
pilas.eventos.pulsa_tecla_escape.conectar(self.volver_Menu)
#Activo evento para volver al menu principal
def volver_Menu(self,evento):
pilas.cambiar_escena(menu.Menu())
otra duda, como podría programar para indicarle al jugador que gano la partida? desde ya gracias