Пример #1
0
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)
Пример #2
0
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()
        
            
Пример #3
0
Файл: main.py Проект: szx/YAPGU
 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()
Пример #4
0
 def update(self):
     while self.amount > 0:
         buff.append(self.message)
         self.amount -= 1
         schedule()
Пример #5
0
Файл: logic.py Проект: szx/YAPGU
 def update(dlt):
     global _dt
     _dt = dlt
     schedule()