Warum hab ich seltsame "Pausen" in Pygame (>400

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Benutzeravatar
HorstJENS
User
Beiträge: 123
Registriert: Donnerstag 9. Februar 2006, 21:41
Wohnort: Wien, Österreich
Kontaktdaten:

Hi Pygame-Gurus,
weiß jemand was ich hier falsch gemacht habe ? Es schaut so aus wie eine Garbage-Collection, hat es mit dem kopieren der sprite-group zu tun ?


Problem:
Sobald viele Sprites im Spiel sind (linke Maustaste mehrmals drücken) kommt es manchmal (nach ca. 20 Sekunden) zu einem extrem langen Intervall zwischen 2 mainloop-Durchgängen. Siehe Wert für max (von Millisekunden zwischen 2 Frames) in der Titelleiste. Der Wert sollte so um 30 millisekunden liegen, erreicht manchmal Werte von >300. Siehe auch die nach oben laufende grünen Balken (1 lila Querstrich entspricht 10 Millisekunden).


http://www.spielend-programmieren.at/wi ... eitproblem
http://spielend-programmieren.at
Benutzeravatar
HorstJENS
User
Beiträge: 123
Registriert: Donnerstag 9. Februar 2006, 21:41
Wohnort: Wien, Österreich
Kontaktdaten:

gelöst dank Gumm aus der pygame-mailingliste.

Lösung:

Code: Alles auswählen

    #pygame.sprite.groupcollide(group1, group2, dokill1, dokill2): 
    #return  Sprite_dict
    collisions = pygame.sprite.groupcollide(birdgroup, birdgroup, False, False)
    for bird in collisions.keys():
        for crashbird in collisions[bird]:
            if bird is not crashbird:
                bird.crashing = True
                bird.dx -= crashbird.pos[0] - bird.pos[0]
                bird.dy -= crashbird.pos[1] - bird.pos[1]
http://spielend-programmieren.at
Antworten