[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[pygame] Substantial Lag



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