def microthreadsTest(): buff = [] # We will not use stdout. class Pinger(object): def __init__(self, amount, message="PING"): self.amount = amount # Loop counter. self.message = message microthread(self.update) def update(self): while self.amount > 0: buff.append(self.message) self.amount -= 1 schedule() p1 = Pinger(10) assert count() == 1 run() schedule() # Schedule microthreads. assert len(buff) == 10, "One microthreaded 'pinger' test - length of buffer is %s, not expected 10." % len(buff) buff = [] p1 = Pinger(10) p2 = Pinger(10, "PONG") assert count() == 2 run() schedule() # Schedule microthreads. assert len(buff) == 20, "Two microthreads 'pinger' test - length of buffer is %s, not expected 20." % len(buff)
def SpriteSupermeCommander(): """ The SpriteSupermeCommander function, one of YAPGU default microthreads, which updates all registered Sprite objects - sets actual animation frame, prepares internal rendering for drawing sprite etc. Notes: - Nope, I won't change its name to some wimpy "SpriteManager". (szx) - Screw your threads. (szx) Maintainer: szx Last update date: 22.01.2013 """ while True: #TODO Something. dt = logic.delta() for sprite in _sprites: if not sprite.paused: if sprite.frames > 1: sprite.elapsed += dt if sprite.elapsed > 1.0 / sprite.fps: sprite.frame += 1 if sprite.frame >= sprite.frames: if not sprite.looped: sprite.paused = True else: sprite.frame = 0 sprite.elapsed -= 1.0 / sprite.fps sprite._sprite = pyglet.sprite.Sprite(sprite._imageTexSeq[sprite.frame]) sprite._sprite.position = (sprite.position.x,sprite.position.y) sprite._sprite.rotation = sprite.rotation schedule()
def movementMicrothread(): while True: if inputf.keyboard[inputf.key.UP]: sprite.position.y += 10 * logic.delta() if inputf.mouse.left: sprite.position.x += 10 * logic.delta() #else: # sprite.position.x -= 10 * logic.delta() if inputf.mouse.inRect(sprite): sprite.position.y -= 10 * logic.delta() microthreads.schedule()
def update(self): while self.amount > 0: buff.append(self.message) self.amount -= 1 schedule()
def update(dlt): global _dt _dt = dlt schedule()