import pygame import random class Player: def __init__(self, position, limit, image): # set the inital position and record this as the reset position self.resetPosition = position self.rect = pygame.Rect(0,0,image.get_width(), image.get_height()) self.setPosition(position) self.limit = [float(limit[0]), float(limit[1])] self.image = image self.movementSpeed = [200,200] # pixels per second self.reset() def draw(self, surface): surface.blit(self.image, self.position) def update(self, deltaTime): # Handle movement - if we are moving in that direction # change the current position by the speed value if self.movingUp: self.position[1] = self.position[1] - (self.movementSpeed[1]*deltaTime) if self.movingDown: self.position[1] = self.position[1] + (self.movementSpeed[1]*deltaTime) if self.movingLeft: self.position[0] = self.position[0] - (self.movementSpeed[0]*deltaTime) if self.movingRight: self.position[0] = self.position[0] + (self.movementSpeed[0]*deltaTime) # Clamp the position values so we can't move off the screen if self.position[0] < 0: self.position[0]=0 if self.position[1] < 0: self.position[1]=0 if self.position[0] + self.image.get_width() > self.limit[0]: self.position[0] = self.limit[0] - self.image.get_width() if self.position[1] + self.image.get_height() > self.limit[1]: self.position[1] = self.limit[1] - self.image.get_height() # Move to the new position self.setPosition(self.position) # Movement controllers - two for each direction def StartMoveUp(self): self.movingUp = True def StopMoveUp(self): self.movingUp = False def StartMoveDown(self): self.movingDown = True def StopMoveDown(self): self.movingDown = False def StartMoveLeft(self): self.movingLeft = True def StopMoveLeft(self): self.movingLeft = False def StartMoveRight(self): self.movingRight = True def StopMoveRight(self): self.movingRight = False def setPosition(self,position): self.position = [float(position[0]), float(position[1])] self.rect[0]= self.position[0] self.rect[1]= self.position[1] def reset(self): self.setPosition((0,0)) self.movingUp = False self.movingDown = False self.movingLeft = False self.movingRight = False