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.

Bucles While en Pygame, no entendiendo una declaración True específica

Actualmente estoy aprendiendo pygame y Python en general, y algo me ha confundido un poco en relación a la instrucción “while True”. Actualmente estoy abriendo una ventana negra con un cuadrado rosa en la pantalla. Esto es lo que hace el código a continuación.

import pygame
import sys
from pygame import surface

pygame.init()
screen = pygame.display.set_mode((1600, 900))
pygame.display.set_caption('Yohora')

test_surface = pygame.Surface((100, 100))
test_surface.fill('pink')

while True:
  for event in pygame.event.get(): 
    if event.type == pygame.QUIT: 
      pygame.quit() 
      sys.exit()

screen.blit(test_surface, (200,100)) # Muestra un cuadrado rosa
pygame.display.update()

Quería entender mejor esta instrucción “True” y entender a qué se estaba refiriendo exactamente.

Así que lo cambié a

while screen == True:

y

while pygame.init() == True:

Ambos abrieron la ventana e inmediatamente la cerraron. Sin embargo, cuando lo cambié a

while pygame.init() != True:

entonces la ventana se mantuvo abierta, al igual que cuando usé

while True:

Intuitivamente, habría tenido más sentido para mí si la situación fuera la opuesta, es decir, mientras pygame.init() (es decir, la ventana está inicializada) es True, hacer lo siguiente. Sin embargo, está diciendo “mientras la ventana no esté inicializada (es decir, no sea verdadera), hacer lo siguiente”.

Claramente me estoy perdiendo algo.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La declaración while True: en Python es una expresión común en la programación que crea un bucle infinito. Significa que el cuerpo del bucle se ejecutará repetidamente hasta que el programa sea interrumpido, terminado o salga. En el contexto de Pygame, esto es necesario para la actualización continua de la pantalla del juego y el manejo de eventos del usuario.

    Cuando cambiaste la declaración while True: a while screen == True: o while pygame.init() == True:, básicamente estás intentando comparar el valor de una condición (screen o pygame.init()) con True. Sin embargo, ninguna de estas condiciones evaluará alguna vez a True, por lo tanto, el programa sale inmediatamente del bucle while y termina.

    Por otro lado, cuando cambiaste la declaración a while pygame.init() != True:, estás comprobando si la inicialización de Pygame aún no se ha completado (pygame.init() devuelve True cuando se ha inicializado correctamente). Por lo tanto, el bucle while sigue ejecutándose hasta que Pygame haya finalizado la inicialización y la ventana del juego se muestre.

    En resumen, la declaración while True es necesaria para la ejecución continua de un bucle de juego de Pygame, y cambiarla por algo diferente probablemente resultará en la terminación del programa. El valor de la condición dentro del bucle while debe ser cuidadosamente elegido para que coincida con el comportamiento previsto del programa.

Comments are closed.