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

[pygame] Smooth movement and set_repeat()



Hi,
is it possible to set key_repeat only for some keys? I want move left and move right to repeat after pressing, but all other keys to work only once. How can I achieve that?

I was trying by doing something like this:
for event in events:
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_F5:
self.reset()
if event.key == pygame.K_F1 or event.key == pygame.K_ESCAPE:
self.running = not self.running
if event.key == pygame.K_LEFT:
brick.move(
(brick.position[0] - 1, brick.position[1])
)
pygame.key.set_repeat(100)
if event.key == pygame.K_RIGHT:
brick.move(
(brick.position[0] + 1, brick.position[1])
)
pygame.key.set_repeat(100)
if event.key == pygame.K_x or event.key == pygame.K_UP:
brick.rotate("right")
pygame.key.set_repeat(0)
if event.key == pygame.K_RCTRL or event.key == pygame.K_z:
brick.rotate("left")
pygame.key.set_repeat(0)
if event.key == pygame.K_SPACE:
pygame.key.set_repeat(0)
self.game_state.hard_drop()

But that way if I click for example space and then try to move it won't repeat.