tower shooting function

This commit is contained in:
Lukas Kammerhofer
2026-05-08 16:28:33 +02:00
parent 7a42484ded
commit 665e852ed9
+29 -1
View File
@@ -32,7 +32,7 @@ class Tower:
self.field_rect = rect
return
def try_build(self, player_rect: pygame.Rect, keys: pygame.key.ScancodeWrapper, ects):
def try_build(self, player_rect: pygame.Rect, keys: pygame.key.ScancodeWrapper, ects):
# Baut Tower wenn Spieler E drückt, auf Feld steht und genug ects hat
if not self.field.rect or self.tower.rect:
@@ -46,6 +46,34 @@ class Tower:
self.tower_start = pygame.time.get_ticks()
return True
def update(self, player_rect: pygame.Rect, keys: pygame.key.ScancodeWrapper, ects, monster_rect: pygame.Rect, room_rect: pygame.Rect, blocked_rects: list[pygame.Rect]):
# ruft jeden Frame auf und gibt den Schaden auf Monster zurück
now = pygame.time.get_ticks()
total_damage = 0
self.try_build(player_rect, keys, ects)
# schießen dann, wenn Tower und Monster vorhanden sind
if self.tower_rect and monster_rect:
if now - self.last_shot >= fire_interval:
dx = monster_rect.centerx - self.tower_rect.centerx
dy = monster_rect.centery - self.tower_rect.centery
distance = math.sqrt(dx * dx + dy * dy) or 1
self.projectiles.append({
"x": float(self.tower_rect.centerx),
"y": float(self.tower_rect.centery),
"vel_x": (dx / distance) * PROJECTILE_SPEED,
"vel_y": (dy / distance) * PROJECTILE_SPEED,
})
self.last_shot = now