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

Sonntag 3. Mai 2009, 18:42

Nach langem erfolglosen Versuchen wende ich mich mal hier an das Forum.
Ich möchte gerne zwischen 2 Befehlen einen gewissen Zeitabstand setzten genauer gesagt möchte ich eine Animation abspielen lassen und deswegen muss ich die zeit ziwchen den einzelnen Frames regulieren können. Kann mir jemand helfen?
Benutzeravatar
kbr
User
Beiträge: 895
Registriert: Mittwoch 15. Oktober 2008, 09:27

Sonntag 3. Mai 2009, 18:52

Basti91 hat geschrieben:Ich möchte gerne zwischen 2 Befehlen einen gewissen Zeitabstand setzten
Suchst Du vielleicht time.sleep()?
Ansonsten müsste ich raten, was Du genau meinst.
Benutzeravatar
Basti91
User
Beiträge: 53
Registriert: Samstag 15. Dezember 2007, 11:50
Wohnort: Saarland

Sonntag 3. Mai 2009, 19:04

Kann gut sein das es dieser Befehl ist, ich möchte halt zwischen 2 Frames einer Animtation eine kleine Pause machen, kannst du das time.sleep() ein wenig erläutern?

edit: Habs ausprobiert aber ist anscheinden nicht das wonach ich suche.
Ich möchte sozusagen eine animerte .gif datei in python schreiben
Benutzeravatar
kbr
User
Beiträge: 895
Registriert: Mittwoch 15. Oktober 2008, 09:27

Sonntag 3. Mai 2009, 19:18

Basti91 hat geschrieben:edit: Habs ausprobiert aber ist anscheinden nicht das wonach ich suche.
Ich möchte sozusagen eine animerte .gif datei in python schreiben
Die Zeitspanne zwischen zwei Motiven innerhalb eines animierten GIFs wird in der GIF-Datei angegeben. Da musst Du mal nach dem genauen GIF-Dateiformat googeln. Steht auch in der "Encyclopedia of Graphics File Formats" von Murray & van Ryper, vielleicht gibt es das inzwischen auch online.
Benutzeravatar
Basti91
User
Beiträge: 53
Registriert: Samstag 15. Dezember 2007, 11:50
Wohnort: Saarland

Sonntag 3. Mai 2009, 19:25

Glaub du hast mich nicht richtig verstanden, ich möchte ein Spiel proggen mit hilfe von pygame. Das ganze soll ein Jump and Run sein. Da Python keine animierten .gifs anzeigen kann muss ich die Bewegungsabläufe nun irgendwie mit python moddelieren also viele Frames aneinanderhängen.
Nun hab ich aber das Problem, das mir immer nur der erste Frame der Bewegung angezeigt wird, desshalb habe ich die Vermutung, das die Frames zuschnell abgespielt werden und ich deswegen zwischen den Framewechseln pausen machen muss.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Sonntag 3. Mai 2009, 19:48

Dann pausiere halt mit time.sleep() oder wechsle nur jeden Nten Frame dein Bildchen.
Benutzeravatar
Basti91
User
Beiträge: 53
Registriert: Samstag 15. Dezember 2007, 11:50
Wohnort: Saarland

Sonntag 3. Mai 2009, 20:16

Habs jetzt wieder mit time.sleep() probiert, die abstände funktionieren auch wunderbar, aber ich bekomme immer nur den letzten Frame angezeigt :shock: Weiss jemand woran das liegt?

Hier ein ausschnitt des Programms an der besagten Stelle:

Code: Alles auswählen

    if Bewegung:
        if rechts:
            Mario=Mariorechts2
            MarioX+= 5
            time.sleep(float(0.2))
            Mario=Mariorechts3
            MarioX+=5
            time.sleep(float(0.2))
            Mario=Mariorechts4
            MarioX+=5
            time.sleep(float(0.2))
            Mario=Mariorechts5
            MarioX+=5
            time.sleep(float(0.2))
            Mario=Mariorechts6
            MarioX+=5
            time.sleep(float(0.2))
           
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Sonntag 3. Mai 2009, 20:40

Mit so wenig Code kann man das nicht erkennen, allerdings kann ich zwei Dinge sehen:

1. 0.2 ist ein float, du musst das nicht noch in nen float umrechen
2. Nutze eine Schleife:

Code: Alles auswählen

for i in xrange(5):
     MarioX+= 5
     time.sleep(0.2)
Benutzeravatar
Basti91
User
Beiträge: 53
Registriert: Samstag 15. Dezember 2007, 11:50
Wohnort: Saarland

Sonntag 3. Mai 2009, 20:52

Naja dann hier mal der ganze Code:

http://paste.pocoo.org/show/115582/
Zuletzt geändert von Basti91 am Sonntag 3. Mai 2009, 21:41, insgesamt 1-mal geändert.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Sonntag 3. Mai 2009, 21:05

Du zeichnest deine Figur ja nur am Anfang des Mainloops neu, kein Wunder, dass es nicht kümmert, wie lange du zwischendrin wartest ;-)

Das mit den Bildern (Mariorechts1,...) würde ich als Iterator machen, zum Beispiel als Liste.

Schreibe Variablen klein und mixe vor allem keine englischen und deutschen Begriffe. Außerdem solltest du keinen Code auf Modulebene bauen, schreib das alles schön in Funktionen und Klassen und so weiter...
Benutzeravatar
Basti91
User
Beiträge: 53
Registriert: Samstag 15. Dezember 2007, 11:50
Wohnort: Saarland

Sonntag 3. Mai 2009, 21:22

Code: Alles auswählen

  if Bewegung:
        if rechts:
            Mario=Mariorechts2
            screen.blit(Mario,(MarioX,MarioY))
            MarioX+= 5 
            time.sleep(0.2)
            Mario=Mariorechts3
            screen.blit(Mario,(MarioX,MarioY))
            MarioX+=5 
            time.sleep(0.2)
            Mario=Mariorechts4
            screen.blit(Mario,(MarioX,MarioY))
            MarioX+=5 
            time.sleep(0.2)
            Mario=Mariorechts5
            screen.blit(Mario,(MarioX,MarioY))
            MarioX+=5 
            time.sleep(0.2)
            Mario=Mariorechts6
            screen.blit(Mario,(MarioX,MarioY))
            MarioX+=5 
            time.sleep(0.2) 
hab jetzt das hier probiert aber das funzt auch nicht :(
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Sonntag 3. Mai 2009, 21:30

Pack bitte deinen langen Code in einen Pastebin, ansonsten kann es zu Probleme mit dem Forum kommen und einige Leute können dir nicht mehr antworten.

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

Sonntag 3. Mai 2009, 21:32

wenn du mir sagst wie ich das mache bzw was ne pastebin is mach ich das gerne :wink:
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Sonntag 3. Mai 2009, 21:34

Das kann Google dir sagen. Aber weil ich ja so nett bin: paste.pocoo.org :wink:
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Sonntag 3. Mai 2009, 21:36

Kopiere deinen Code hier rein und tausche dann den Code in deinem langen Beitrag gegen den Link, den du bekommst aus.
Edit: derdon war schneller :(
Antworten