43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
import pygame
|
|
from settings import PLAYER_SIZE
|
|
|
|
class Player:
|
|
def __init__(self, x, y, image):
|
|
self.x = x
|
|
self.y = y
|
|
self.alive = True
|
|
self.rect = pygame.Rect(x, y, PLAYER_SIZE, PLAYER_SIZE)
|
|
self.dir = "up"
|
|
self.image = image
|
|
self.ammo = 5 # Startwert für Munition
|
|
|
|
def move(self, keys, map_w, map_h):
|
|
if not self.alive:
|
|
return
|
|
dx = dy = 0
|
|
if keys[pygame.K_w]:
|
|
dy -= 5
|
|
self.dir = "up"
|
|
if keys[pygame.K_s]:
|
|
dy += 5
|
|
self.dir = "down"
|
|
if keys[pygame.K_a]:
|
|
dx -= 5
|
|
self.dir = "left"
|
|
if keys[pygame.K_d]:
|
|
dx += 5
|
|
self.dir = "right"
|
|
self.x = max(0, min(map_w - PLAYER_SIZE, self.x + dx))
|
|
self.y = max(0, min(map_h - PLAYER_SIZE, self.y + dy))
|
|
self.rect.topleft = (self.x, self.y)
|
|
|
|
def draw(self, win, ox, oy):
|
|
if not self.alive:
|
|
return
|
|
img = self.image
|
|
angle = {"up": 90, "right": 0, "down": -90, "left": 180}[self.dir]
|
|
if img:
|
|
rotated_img = pygame.transform.rotate(img, angle)
|
|
win.blit(rotated_img, (self.x - ox, self.y - oy))
|
|
else:
|
|
pygame.draw.rect(win, (200, 200, 0), (self.x - ox, self.y - oy, PLAYER_SIZE, PLAYER_SIZE))
|