90 lines
2.4 KiB
Python
90 lines
2.4 KiB
Python
"""
|
|
Player entity class
|
|
"""
|
|
|
|
|
|
import pygame
|
|
|
|
|
|
class Player(pygame.sprite.Sprite):
|
|
def __init__(self):
|
|
pygame.sprite.Sprite.__init__(self)
|
|
self.image = pygame.Surface((50, 75))
|
|
self.image.fill((153, 151, 0))
|
|
self.rect = self.image.get_rect()
|
|
self.rect.center = (100, 400)
|
|
self.speed = 0.0
|
|
self.isJumping = False
|
|
self.isCrouching = False
|
|
self.hoverCount = 0
|
|
self.isOnFloor = False
|
|
self.isDownJump = False
|
|
self.isDownCrouch = False
|
|
self.buttonsJump = (pygame.K_UP, pygame.K_SPACE,)
|
|
self.buttonsCrouch = (pygame.K_DOWN,)
|
|
self.gameSpeed = 1
|
|
|
|
|
|
def crouch(self):
|
|
if not self.isCrouching:
|
|
self.isCrouching = True
|
|
self.rect = self.rect.inflate(0, -25)
|
|
# self.image.set_clip((50, 50))
|
|
|
|
|
|
def standup(self):
|
|
if self.isCrouching:
|
|
self.isCrouching = False
|
|
self.rect = self.rect.inflate(0, 25)
|
|
|
|
def updateSpeed(self, newGameSpeed):
|
|
self.gameSpeed = newGameSpeed
|
|
|
|
def control(self, event):
|
|
if event.type == pygame.KEYDOWN:
|
|
if event.key in self.buttonsCrouch:
|
|
self.isDownCrouch = True
|
|
elif event.key in self.buttonsJump:
|
|
self.isDownJump = True
|
|
|
|
elif event.type == pygame.KEYUP:
|
|
if event.key in self.buttonsCrouch:
|
|
self.isDownCrouch = False
|
|
elif event.key in self.buttonsJump:
|
|
self.isDownJump = False
|
|
|
|
|
|
def update(self):
|
|
if not self.speed: self.rect.y += 1
|
|
|
|
self.speed += 0.09 * self.gameSpeed
|
|
self.rect.y += self.speed
|
|
|
|
if not self.isDownJump:
|
|
self.hoverCount = 0
|
|
|
|
if self.isOnFloor:
|
|
self.speed = 0
|
|
|
|
if self.isDownJump:
|
|
self.isJumping = True
|
|
|
|
if self.isCrouching:
|
|
self.standup()
|
|
|
|
elif self.isDownCrouch:
|
|
if not self.isCrouching:
|
|
self.crouch()
|
|
|
|
elif self.isCrouching:
|
|
self.standup()
|
|
|
|
if self.isJumping:
|
|
if self.isDownJump and self.hoverCount < 8:
|
|
self.speed -= (1 - self.speed/(15+
|
|
self.hoverCount*3)) * self.gameSpeed/2
|
|
self.hoverCount += 1
|
|
|
|
else:
|
|
self.isJumping = False
|