Zeitabstände einbauen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
Basti91
User
Beiträge: 53
Registriert: Samstag 15. Dezember 2007, 11:50
Wohnort: Saarland

Beitragvon Basti91 » Sonntag 3. Mai 2009, 21:42

ok is erledigt, aber jetzt mal wieder back to topic: wie kann ich die Figur nach jedem Schritt neu zeichnen?
ichbinsisyphos
User
Beiträge: 120
Registriert: Montag 4. Juni 2007, 19:19

Beitragvon ichbinsisyphos » Sonntag 3. Mai 2009, 21:47

Mit time.sleep() wird deine GUI zwischendurch nicht upgedated, also nur das letze Bild angezeigt. Ich hatte kürzlich das selbe Problem mit einer PyQt4-GUI. Dort war die Lösung, einen QTimer zu verwenden, der in festen Abständen eine Funktion auslöst, die jedesmal ein anderes Bild anzeigt.

Keine Ahnung ob PyGame was ähnliches hat, bzw auf welchem Toolkit das aufbaut.
problembär

Beitragvon problembär » Montag 4. Mai 2009, 00:53

http://www.pygame.org/docs/ref/time.htm ... .time.wait

Ist das nun soo schwer zu finden?

Gruß
Benutzeravatar
Basti91
User
Beiträge: 53
Registriert: Samstag 15. Dezember 2007, 11:50
Wohnort: Saarland

Beitragvon Basti91 » Montag 4. Mai 2009, 12:20

Das pygame.time.wait ist schon ganz gut, löst aber noch nicht mein problem, dass ich nicht nach jedem Frame die Figur neu zeichnen kann
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

Beitragvon Dill » Montag 4. Mai 2009, 12:31

warum benutzt du nicht pygame-sprites?
Benutzeravatar
Basti91
User
Beiträge: 53
Registriert: Samstag 15. Dezember 2007, 11:50
Wohnort: Saarland

Beitragvon Basti91 » Montag 4. Mai 2009, 12:42

pygame-sprites? sry bin neu auf dem gebiet.

Hab jetzt das hier versucht aber ich muss iwie nach dem ersten durchlaufen das zaehler=0 wegbekommen damit er auch weiterläuft.

Code: Alles auswählen

if Bewegung:
        if rechts:
            Mariorechts= (Mariorechts2,Mariorechts3,Mariorechts4,Mariorechts5,Mariorechts6)
            zaehler=0
            MarioX+= 5
            Mario=Mariorechts[zaehler]
            pygame.time.wait(100)
            zaehler+=1



Gibt es nicht nen Befehl der abfragt ob eine Variable nicht definieret ist?
z.B sowas wie "not definited")
Benutzeravatar
Basti91
User
Beiträge: 53
Registriert: Samstag 15. Dezember 2007, 11:50
Wohnort: Saarland

Beitragvon Basti91 » Montag 4. Mai 2009, 13:12

Treath kann geschlossen werden.... nach langem experimentieren hab ichs endlich hinbekommen :D :D :D :D Vielen Dank für eure Hilfe
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Beitragvon cofi » Montag 4. Mai 2009, 13:19

Thread heisst das.

Um anderen Hilfe-suchenden mit ähnlichem Anliegen zu helfen, könntest/solltest du aber noch deine Lösung offen legen. ;)
Benutzeravatar
Basti91
User
Beiträge: 53
Registriert: Samstag 15. Dezember 2007, 11:50
Wohnort: Saarland

Beitragvon Basti91 » Montag 4. Mai 2009, 13:24

Whoops sry, jaja die Rechtschreibung^^

Also gut zuerst einmal müsst ihr außerhalb eine Variable zaehler definieren, und diese am besten zaehler =0.

Nun der entscheidende Quelltextteil:

Code: Alles auswählen

if Bewegung:
        if rechts:
            Mariorechts= [Mariorechts2,Mariorechts3,Mariorechts4,Mariorechts5,Mariorechts6]
            MarioX+= 5
            Mario=Mariorechts[zaehler]
            pygame.time.wait(100)
            zaehler= zaehler+1
            if zaehler==5:
                zaehler=0
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Beitragvon derdon » Montag 4. Mai 2009, 13:24

Warum sollte dieser Thread geschlossen werden?
BlackJack

Beitragvon BlackJack » Montag 4. Mai 2009, 14:41

@Basti91: Das sollte alles in einer Klasse verschwinden, am besten eine, die von `pygame.sprite.Sprite` abgeleitet ist.
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

Beitragvon Dill » Montag 4. Mai 2009, 14:48

dann solltest du noch die variablen klein schreiben und dir vor allem nicht mitten im programm datenstrukturen zusammenbauen:

Code: Alles auswählen

Mariorechts= [Mariorechts2,Mariorechts3,Mariorechts4,Mariorechts5,Mariorechts6]


ist böse!

leerzeichen hinter "," machen sich auch gut.
ichbinsisyphos
User
Beiträge: 120
Registriert: Montag 4. Juni 2007, 19:19

Beitragvon ichbinsisyphos » Montag 4. Mai 2009, 16:43

Is aber lustig, dass "wait" hier funktioniert? Ist dieses Ding unabhängig von der main-loop, ein eigener thread? Oder, wenn ich mir den Code-Schnippsel ansehe, ist das einfach ein Teil der main-loop?
BlackJack

Beitragvon BlackJack » Montag 4. Mai 2009, 17:28

@ichbinsisyphos: Bei `pygame` musst Du Dir die Hauptschleife selber schreiben. Der Ausschnitt steht also höchstwahrscheinlich in dieser Schleife, die normalerweise eine "Endlosschleife" ist, in der eine ``for``-Schleife über die Ereigniswarteschlange steckt.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder