diff --git a/platformer.py b/platformer.py index 054ae8b..cba2ba1 100644 --- a/platformer.py +++ b/platformer.py @@ -15,6 +15,8 @@ COIN_SCALING = 0.5 # Movement speed of player, in pixels per frame PLAYER_MOVEMENT_SPEED = 5 +GRAVITY = 1 +PLAYER_JUMP_SPEED = 20 class MyGame(arcade.Window): @@ -76,7 +78,9 @@ class MyGame(arcade.Window): self.wall_list.append(wall) # Create the 'physics engine' - self.physics_engine = arcade.PhysicsEngineSimple(self.player_sprite, self.wall_list) + self.physics_engine = arcade.PhysicsEnginePlatformer(self.player_sprite, + self.wall_list, + GRAVITY) def on_draw(self): """ Render the screen. """ @@ -93,9 +97,8 @@ class MyGame(arcade.Window): """Called whenever a key is pressed. """ if key == arcade.key.UP or key == arcade.key.W: - self.player_sprite.change_y = PLAYER_MOVEMENT_SPEED - elif key == arcade.key.DOWN or key == arcade.key.S: - self.player_sprite.change_y = -PLAYER_MOVEMENT_SPEED + if self.physics_engine.can_jump(): + self.player_sprite.change_y = PLAYER_JUMP_SPEED elif key == arcade.key.LEFT or key == arcade.key.A: self.player_sprite.change_x = -PLAYER_MOVEMENT_SPEED elif key == arcade.key.RIGHT or key == arcade.key.D: @@ -104,11 +107,7 @@ class MyGame(arcade.Window): def on_key_release(self, key, modifiers): """Called when the user releases a key. """ - if key == arcade.key.UP or key == arcade.key.W: - self.player_sprite.change_y = 0 - elif key == arcade.key.DOWN or key == arcade.key.S: - self.player_sprite.change_y = 0 - elif key == arcade.key.LEFT or key == arcade.key.A: + if key == arcade.key.LEFT or key == arcade.key.A: self.player_sprite.change_x = 0 elif key == arcade.key.RIGHT or key == arcade.key.D: self.player_sprite.change_x = 0