Création simultanée de plusieurs instances du même objet en Python
Dans le code de votre jeu, vous aviez l'intention de créer des cercles à des emplacements aléatoires, en attendant que chacun cercle pour apparaître indépendamment. Cependant, les cercles suivants supplantèrent les précédents. Ce comportement découle de la nature inhérente des applications basées sur des événements comme les jeux.
Comprendre les applications basées sur des événements
Dans pygame, la boucle de jeu surveille en permanence les événements (tels que lorsque la souris clique) et répond en conséquence. Cependant, time.sleep() et les fonctions associées n'attendent pas ou ne contrôlent pas vraiment le timing du jeu. Au lieu de cela, ils gèlent l'application pendant leur exécution. Ainsi, vos cercles n'apparaissaient pas simultanément mais plutôt un à la fois, avec sleep() gelant le programme entre les deux.
Corriger l'approche
Pour générer plusieurs objets simultanément, deux approches principales peuvent être adoptées :
1. Utilisation des mesures du temps
2. L'utilisation des événements de minuterie
Exemple de code minimal utilisant le temps Mesures
object_list = [] time_interval = 500 # milliseconds between object spawns next_object_time = 0 while run: current_time = pygame.time.get_ticks() if current_time > next_object_time: next_object_time += time_interval object_list.append(Object())
Exemple de code minimal utilisant des événements de minuterie
object_list = [] time_interval = 500 # milliseconds between object spawns timer_event = pygame.USEREVENT+1 pygame.time.set_timer(timer_event, time_interval) while run: for event in pygame.event.get(): if event.type == timer_event: object_list.append(Object())
Considérations supplémentaires
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!