Python-Schleife ohne Verzögerung die Zeit.sleep()
In einem MMO-Spiel-client muss ich eine Schleife erstellen, wird die Schleife 30-mal in 30 Sekunden (1 mal pro Sekunde).
Zu meiner größten Enttäuschung entdeckte ich, dass ich nicht verwenden können time.sleep()
innerhalb der Schleife da, dass das Spiel friert während der Schleife.
Die Schleife selbst ist ziemlich einfach, und die einzige Schwierigkeit ist, wie es zu verzögern.
limit = 31
while limit > 0 :
print "%s seconds remaining" % (limit)
limit = limit -1
Den python libs existieren in den client .pyc Dateien in einem separaten Ordner, und ich hoffe, dass kann ich vermeiden, messing mit Ihnen.
Denkst du, dass es irgendeinen Weg gibt, um dies zu erreichen Verzug oder ist es eine Sackgasse?
multithreading ist dein Freund.
Es ist schwierig, eine Lösung anzubieten, wenn das einzige, was wir wissen über das Spiel "Schleifen"...
Es ist schwierig, eine Lösung anzubieten, wenn das einzige, was wir wissen über das Spiel "Schleifen"...
InformationsquelleAutor mortaZa | 2012-05-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihrem Spiel hat eine main-loop. (Ja, tut es.)
Jedes mal durch die Schleife, wenn Sie gehen, um zu überprüfen Zustand, die Spieler bewegen, den Bildschirm neu zeichnen, etc., überprüfen Sie die Zeit auf dem timer. Wenn mindestens 1 Sekunde verstrichen ist, drucken Sie sich Ihren "verbleibenden Sekunden" quip. Wenn Sie mindestens 30 Sekunden verstrichen ist, wird Sie Sie auslösen, was auch immer Ihre Aktion ist.
InformationsquelleAutor tylerl
Können Sie es nicht tun, ohne zu blockieren oder einfädeln, es sei denn, Sie bereit sind zu verlieren, Präzision...
Ich würde vorschlagen, irgendwann wie diese, aber Durchzug ist der richtige Weg, dies zu tun...
oder sogar...
time.sleep(0.1)
zu machen "tick" 10 mal pro Sekunde, um zu vermeiden, füllen Sie Ihren Bildschirm mit hundert "Schleife..." - Zeilen, arbeiten Sie Beispiele, copy+paste und ausprobieren.InformationsquelleAutor KurzedMetal
Angenommen, dass die Ausführungszeit von dem, was in der Schleife ist weniger als 1 Sekunde:
Dadurch wird der loop-iteration Zeit gleich 1 Sekunde.
Sie sagen nicht, dass es sollte nicht zu blocken 🙁 dann mal Veranstaltungen, wie jemand hier gesagt
InformationsquelleAutor AlbertFerras