Movement Moving left and right is similar to the previous tutorial and simply mean changing the (x,y) position of the player. For jumping, we use a formula from classical mechanics:
F = 1/2 * m * v^2
Where F is the force up/down, m is the mass of your object and v is the velocity. The velocity goes down over time because when the player jumps the velocity will not increase more in this simulation. If the player reaches the ground, the jump ends. In Python, we set a variable isjump to indicate if the player is jumping or not. If the player is, its position will be updated according to the above formula.
Full Code:
from pygame.localsimport * import pygame import math from time import sleep classPlayer: x = 10 y = 500 speed = 10
# Stores if player is jumping or not. isjump = 0 # Force (v) up and mass m. v = 8 m = 2 defmoveRight(self): self.x = self.x + self.speed defmoveLeft(self): self.x = self.x - self.speed defjump(self): self.isjump = 1
defupdate(self): if self.isjump: # Calculate force (F). F = 0.5 * mass * velocity^2. if self.v > 0: F = ( 0.5 * self.m * (self.v*self.v) ) else: F = -( 0.5 * self.m * (self.v*self.v) ) # Change position self.y = self.y - F
# Change velocity self.v = self.v - 1
# If ground is reached, reset variables. if self.y >= 500: self.y = 500 self.isjump = 0 self.v = 8