rendered paste bodyimport pygame, input, sprite"""Generic character classHAY ANDY D;O"""class Character(object): def __init__(self, x, y): self.speed_h = 0 # Horizontal velocity self.speed_v = 0 # Vertical velocity self.grounded = 0 # Whether or not on the ground # Set sprite coords (only works with subclass) self.sprite.rect.x, self.sprite.rect.y = x, y def update(self): # Left movement if self.move_left() and not self.move_right(): # Update horizontal speed self.speed_h = max(self.speed_h - 3, -50) # Change, mirror sprite if newly moving or wrongfully skidding if range(-3, 0).count(self.speed_h) or \ (self.sprite.status == 'skidding' and self.speed_h < 0): self.sprite.mirror = 1 if self.grounded: self.sprite.set_status('running') # Skid sprite elif self.speed_h > 0 and self.grounded: self.sprite.set_status('skidding') # Right movement elif self.move_right() and not self.move_left(): # Update horizontal speed self.speed_h = min(self.speed_h + 3, 50) # Change, mirror sprite if newly moving or wrongfully skidding if range(1, 4).count(self.speed_h) or \ (self.sprite.status == 'skidding' and self.speed_h > 0): self.sprite.mirror = 0 if self.grounded: self.sprite.set_status('running') # Skid sprite elif self.speed_h < 0 and self.grounded: self.sprite.set_status('skidding') # Skip if stopped if self.speed_h != 0: # Move sprite, accounting for friction self.speed_h += [1, -1][self.speed_h > 0] self.sprite.rect.x += (self.speed_h / 5) # Change sprite if stopped if self.speed_h == 0 and self.grounded: self.sprite.set_status('idle') # In the air if not self.grounded: # Update vertical speed and move self.speed_v += 1 self.sprite.rect.y += self.speed_v # Change sprite to landing if self.speed_v > 0 and self.sprite.status != 'landing': self.sprite.set_status('landing') # On the ground elif self.do_jump(): # Update vertical speed and unground self.speed_v, self.grounded = -10, 0 # Change sprite self.sprite.set_status('jumping') # Update sprite self.sprite.update() def draw(self, screen): # Draw sprite self.sprite.draw(screen) def move_left(self): return 0 def move_right(self): return 0 def do_jump(self): return 0 """Player class""" class Player(Character): def __init__(self, x, y): # Load 'player' sprite self.sprite = sprite.CharacterSprite('player') # Call superclass super(Player, self).__init__(x, y) def move_left(self): # Left arrow key return input.down(pygame.K_LEFT) def move_right(self): # Right arrow key return input.down(pygame.K_RIGHT) def do_jump(self): # Space bar return input.trigger(pygame.K_SPACE)