es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La pantalla de Pygame no se cierra

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en Markdown.

Soy un usuario de Macbook y recientemente comencé a aprender a programar juegos usando Python.
Mi problema es que cada vez que intento cerrar la pantalla, no se cierra.

importar pygame
importar sys
pygame.init()
ancho = 800
alto = 600
pantalla = pygame.display.set_mode((ancho, alto))
fin_del_juego = Falso
mientras no fin_del_juego:
para evento en pygame.event.get():
si evento.tipo == pygame.QUIT:
sys.exit()

Cuando apunto el cursor a la pantalla, se convierte en un círculo… Cursur, así que usualmente solo presiono forzar a salir “en el ícono de la serpiente” en el dock.
Entonces, ¿cómo puedo solucionar esto y hacer que la pantalla se cierre simplemente presionando el botón de cerrar?
Estoy usando Python 3.
Gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema aquí podría estar en el comando sys.exit() que no está saliendo correctamente del bucle del juego cuando se presiona el botón de cerrar.

    Una forma de solucionar esto sería añadir algunas instrucciones de impresión para ver si el bloque de código if event.type == pygame.QUIT: se está ejecutando correctamente cuando se presiona el botón de cerrar. Por ejemplo:

    while not game_over:
        for event in pygame.event.get(): 
            if event.type == pygame.QUIT :
                print("Botón de cerrar presionado")
                sys.exit()
    

    Si el mensaje “Botón de cerrar presionado” aparece en la consola cuando se presiona el botón de cerrar, entonces sabremos que el evento de pygame se está detectando correctamente y el problema podría ser con el comando sys.exit().

    Un método alternativo para salir del bucle del juego sería establecer game_over = True cuando se presiona el botón de cerrar, y luego hacer que el bucle while salga de forma elegante por sí mismo. Por ejemplo:

    while not game_over:
        for event in pygame.event.get(): 
            if event.type == pygame.QUIT :
                game_over = True
    
        # aquí va el resto del código del bucle del juego
    
    pygame.quit()
    

    De esta manera, el bucle del juego saldrá de forma natural cuando game_over se establezca en True, y luego pygame.quit() cerrará correctamente el motor de pygame cuando el programa haya terminado de ejecutarse.

    Espero que esto sea de ayuda. Déjame saber si tienes alguna otra pregunta.

Comments are closed.