Hi everyone,
I apologize in advance for posting 43 lines of code, but I can't figure out
where on Earth the trouble is coming from.
When I run this code, the keys do exactly what I'd like, but I'm noticing a
delay of a few tenths of a second between when I press the key and when the
sound of the step is played. Further, sometimes when I tap an arrow key
quickly, the player won't even take a step.
Can anyone please tell me what I'm doing wrong? This looks sound to me.

import time
import pygame
from sound_lib.stream import FileStream
from sound_lib.output import Output

class Player(object):

        def __init__(self):
                self.x = 10
                self.step = FileStream(file="sounds/step.ogg")
                self.step.pan = 0
                self.step_time = 0.25
                self.last_step_time = 0.0

        def move(self, dir):
                if time.time() - self.last_step_time <= self.step_time:
                        return
                if self.x + dir < 1 or self.x + dir > 20:
                        return
                self.x += dir
                if dir > 0:
                        self.step.pan += 0.1
                else:
                        self.step.pan -= 0.1
                self.step.play(True)
                self.last_step_time = time.time()

def main():
        clock = pygame.time.Clock()
        o = Output()
        guy = Player()
        screen = pygame.display.set_mode((640, 400))
        while(True):
                keys = pygame.key.get_pressed()
                if keys[pygame.K_LEFT]:
                        guy.move(-1)
                if keys[pygame.K_RIGHT]:
                        guy.move(1)
                for event in pygame.event.get(): pass
                clock.tick(5)

if __name__ == '__main__':
        main()

Thanks much,
Ryan

Reply via email to