Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
ayuda con código que se cierra al darle enter
#1
Hola gente soy david de argentina tengo disscapacidad visual y estoy tratando de hacer un juego como el cluedo con la misma temática. La ventana del intérprete si me abre me sale el mensaje que elija con cuantos jugadores quiero jugar y que ingrese el número cuando le pongo el número y le doy enter se cierra automáticamente , revisé el código y no le encuentro donde puede estar el error en realidad quiero  poder arreglar esto para después continuarlo con una presntación y mas opciones para hacerlo más divertido. Acontinuación va el código, espero puedan ayudarme. 

import random

# Definimos las clases para los elementos del juego
class Sospechoso:
    def __init__(self, nombre):
        self.nombre = nombre

class Arma:
    def __init__(self, nombre):
        self.nombre = nombre

class Aposento:
    def __init__(self, nombre):
        self.nombre = nombre

class JuegoClue:
    def __init__(self):
        self.sospechosos = [
            Sospechoso("Dueño de Casa"),
            Sospechoso("Dueña de Casa"),
            Sospechoso("Sirvienta"),
            Sospechoso("Cocinera"),
            Sospechoso("Jardinero"),
            Sospechoso("Mayordomo")
        ]
       
        self.armas = [
            Arma("Veneno"),
            Arma("Revólver"),
            Arma("Cuerda"),
            Arma("Hacha"),
            Arma("Palanca"),
            Arma("Cuchillo")
        ]
       
        self.aposentos = [
            Aposento("Dormitorio"),
            Aposento("Baño"),
            Aposento("Sótano"),
            Aposento("Cocina"),
            Aposento("Salón"),
            Aposento("Biblioteca"),
            Aposento("Oficina"),
            Aposento("Comedor"),
            Aposento("Jardín")
        ]

        self.sospechosos_en_juego = []
        self.archivo_confidencial = []
        self.libretas = {}
        self.turno_actual = 0

    def configurar_juego(self, num_jugadores):
        self.sospechosos_en_juego = random.sample(self.sospechosos, num_jugadores)
        self.archivo_confidencial = (
            random.choice(self.sospechosos_en_juego),
            random.choice(self.armas),
            random.choice(self.aposentos)
        )
        for sospechoso in self.sospechosos_en_juego:
            self.libretas[sospechoso.nombre] = []

    def mostrar_informacion(self):
        print("Sospechosos en juego:")
        for sospechoso in self.sospechosos_en_juego:
            print(f"- {sospechoso.nombre}")

    def tirar_dado(self):
        return random.randint(1, 6)

    def hacer_sugerencia(self, jugador, sospechoso, arma, aposento):
        print(f"{jugador.nombre} sugiere que el crimen fue cometido por {sospechoso.nombre}, "
              f"con {arma.nombre}, en el {aposento.nombre}.")
        for i in range(1, len(self.sospechosos_en_juego) + 1):
            jugador_o = self.sospechosos_en_juego[(self.turno_actual + i) % len(self.sospechosos_en_juego)]
            if jugador_o != jugador:
                # Simulación de que el jugador revisa sus cartas
                if any(c.nombre == sospechoso.nombre or c.nombre == arma.nombre or c.nombre == aposento.nombre for c in jugador_o.cartas):
                    carta_mostrada = random.choice([c for c in jugador_o.cartas if c.nombre == sospechoso.nombre or c.nombre == arma.nombre or c.nombre == aposento.nombre])
                    print(f"{jugador_o.nombre} ha mostrado una carta.")
                    self.libretas[jugador.nombre].append(carta_mostrada)
                    return
        print(f"{jugador.nombre} no recibió ninguna carta.")

    def hacer_acusacion(self, jugador, sospechoso, arma, aposento):
        print(f"{jugador.nombre} acusa que el crimen fue cometido por {sospechoso.nombre}, "
              f"con {arma.nombre}, en el {aposento.nombre}.")
        # Aquí se comprobaría la acusación, pero se omitirá para mantener el misterio.

def main():
    juego = JuegoClue()

    while True:
        try:
            num_jugadores = int(input("Ingrese el número de jugadores (2 a 6): "))
            if num_jugadores < 2 or num_jugadores > 6:
                print("Número de jugadores no válido.")
                continue

            juego.configurar_juego(num_jugadores)
            juego.mostrar_informacion()

            while True:
                jugador = juego.sospechosos_en_juego[juego.turno_actual]
                dado = juego.tirar_dado()
                print(f"{jugador.nombre} tira el dado y obtiene un {dado}.")

                # Aquí iría la lógica de movimiento
                # Supongamos que el jugador hace una sugerencia
                sospechoso = random.choice(juego.sospechosos_en_juego)
                arma = random.choice(juego.armas)
                aposento = random.choice(juego.aposentos)
                juego.hacer_sugerencia(jugador, sospechoso, arma, aposento)

                # Supongamos que el jugador decide hacer una acusación
                juego.hacer_acusacion(jugador, sospechoso, arma, aposento)

                # Pasar al siguiente jugador
                juego.turno_actual = (juego.turno_actual + 1) % len(juego.sospechosos_en_juego)

                continuar = input("¿Desea continuar la partida? (s/n): ")
                if continuar.lower() != 's':
                    break

        except ValueError:
            print("Por favor, ingrese un número válido.")

        continuar_partida = input("¿Desea iniciar una nueva partida? (s/n): ")
        if continuar_partida.lower() != 's':
            break

if __name__ == "__main__":
    main()
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)