import pygame from enemy import Enemy from bullet import Bullet class Player: def __init__(self, game, screen): self.health = 200 self.pos = [500, 250] self.size = 20 self.speed = 5 self.color = (0,0,0) self.screen = screen self.game = game def shoot(self): m_x, m_y = pygame.mouse.get_pos() dx = m_x - self.pos[0] dy = m_y - self.pos[1] length = (dx**2+dy**2)**(0.5) self.game.add_object(Bullet( self.game, self.screen, self.pos[0]+(self.size/2), self.pos[1]+(self.size/2), (dx/length)*10, (dy/length)*10 )) def move(self, x,y): self.pos[0] += x*self.speed self.pos[1] += y*self.speed if self.pos[0] < 0: self.pos[0] = 0 elif self.pos[0]+self.size > self.screen.get_width(): self.pos[0] = self.screen.get_width()-self.size if self.pos[1] < 0: self.pos[1] = 0 elif self.pos[1]+self.size > self.screen.get_height(): self.pos[1] = self.screen.get_height()-self.size def draw(self): pygame.draw.rect(self.screen, self.color, pygame.rect.Rect(self.pos, (self.size, self.size))) def update(self): pressed = pygame.key.get_pressed() y = pressed[pygame.K_s] - pressed[pygame.K_w] x = pressed[pygame.K_d] - pressed[pygame.K_a] self.move(x,y) self.check_collisions() if self.health <= 0: self.game.game_over() def check_collisions(self): for obj in self.game.get_objects(): if not isinstance(obj, Enemy): continue enemy = obj enemy_pos = enemy.get_center_pos() if self.pos[0] <= enemy_pos[0] <= self.pos[0]+self.size and self.pos[1] <= enemy_pos[1] <= self.pos[1]+self.size: self.health -= 20 self.game.remove_object(enemy)