I am learning pygame module by developing a platform game.
I am taking inspiration from this Youtube video and channel
Jumping behavior & problem
I can handle the fact that the player cannot jump if it is not laying on a platform.
But I figured out that when I press the left or right key and jump key at the same time the jump value is twice than what it should be.
I have a class Game which handle the main game loop and two other sprite classes Player and Platform.
class Game
In the class Game I have a method update in which I am checking the collision between platforms and player.
class Game:
# game main loop
def __init__(self):
# ...
self.hits = None
# ...
def update(self):
# update all sprites in the sprites group
self.all_sprites.update(self.all_events, self.hits)
# check collision between player and platforms
self.hits = pygame.sprite.spritecollide(self.player, self.platforms, False)
if self.hits:
self.player.rect.bottom = self.hits[0].rect.top
class Player
In the class Player I am then using the list of collision and jump only if player is in collision with platforms:
class Player(pygame.sprite.Sprite):
# player class
def __init__(self):
#...
def update(self, events, hits):
keystate = pygame.key.get_pressed()
self.move_player(keystate)
self.apply_gravity()
self.jump(keystate, events, hits)
def jump(keystate, events, hits):
for event in events:
if event.type == pygame.KEYDOWN:
if keystate[KEYS[self.player_data["jump"]]] and hits:
self.rect.y -= self.player_data["jumpPower"]
You can find the whole project code on github.
I captured this issue on the animated gif:
- when I pressed both keys then the jump is too high

Do you have an idea how to solve this strange behavior ?