[Twisted-Python] [WISH] pygame reactor
Brian Warner
warner at lothar.com
Wed Dec 17 15:51:01 MST 2003
> My hope is, now that pyui is somewhat death or windows only, to have a
> pygame reactor maybe using pygame.event.wait() which idles till a
> pygame event comes.
Perhaps as a way of getting started, Paul Boehm posted the following code to
this list in October of 2002. Unlike Twisted, pygame isn't very quiescent, so
there isn't a way to just sleep until something needs to be done. Instead, in
this code, twisted runs the pygame update routine as frequently as necessary
to achieve the desired frame rate. This probably has implications for
response latency to joystick events, etc.. I haven't actually tried to run
this in a long time (since about November of 2002 :).
-Brian
# MyGame embedded in Twisted
from pygame import time
from twisted.internet import reactor
import mygame
class PygameTimer:
def __init__(self, game):
self.clock = time.Clock()
self.game = game
self.update()
def update(self):
self.clock.tick()
self.ms = self.clock.get_rawtime()
framespeed = (1.0/100.0) * 1000
lastspeed = self.ms
next = framespeed - lastspeed
print "framespeed", framespeed, "ms", self.ms, "next", next, "fps", self.clock.get_fps()
self.game.iterate()
if self.game.want_quit:
self.game.cleanup()
reactor.stop()
else:
reactor.callLater(next/1000.0*2.0, self.update)
if __name__ == "__main__":
pt = PygameTimer(mygame.Game())
reactor.run()
More information about the Twisted-Python
mailing list