added sprite for book projectile

This commit is contained in:
Lukas Kammerhofer
2026-05-08 17:57:49 +02:00
parent 8f5a0ed6de
commit e482aa6080
+21 -1
View File
@@ -1,3 +1,5 @@
from turtledemo.lindenmayer import draw
import pygame import pygame
import random import random
import math import math
@@ -34,6 +36,14 @@ class Tower:
print(f"Error loading tower sprite: {e}") print(f"Error loading tower sprite: {e}")
self.tower_image = None self.tower_image = None
# Sprite laden für Projektil
try:
self.projectile_image = pygame.image.load("assets/items/book.png").convert_alpha()
self.projectile_image = pygame.transform.scale(self.projectile_image, (projectile_size, projectile_size))
except Exception as e:
print(f"Error loading projectile sprite: {e}")
self.tower_image = None
# soll interaktives Tower Feld an zufälliger freier Position im Raum spawnen # soll interaktives Tower Feld an zufälliger freier Position im Raum spawnen
def field_spawn(self, room_rect: pygame.Rect, blocked_rects: list[pygame.Rect]): def field_spawn(self, room_rect: pygame.Rect, blocked_rects: list[pygame.Rect]):
# versucht bis zu 50 mal, eine nicht belegte Stelle im Raum zu finden # versucht bis zu 50 mal, eine nicht belegte Stelle im Raum zu finden
@@ -144,12 +154,22 @@ class Tower:
# Restzeit der Tower über dem Sprite anzeigen (in Sekunden) # Restzeit der Tower über dem Sprite anzeigen (in Sekunden)
surface.blit(font.render(str(sec), True, (255, 255, 255)), (r.x + 8, r.y - 18)) surface.blit(font.render(str(sec), True, (255, 255, 255)), (r.x + 8, r.y - 18))
# alle aktiven Projektile zeichnen als kleine Rechtecke # alle aktiven Projektile zeichnen als Prite oder Fallback als kleine Rechtecke
for p in self.projectiles: for p in self.projectiles:
draw_x = int(p["x"]) - cam_x
draw_y = int(p["y"]) - cam_y
if self.projectile_image:
# zeichnet Buch Sprite
surface.blit(self.projectile_image, (draw_x, draw_y))
else:
# Fallback - gelbes Rechteck
pygame.draw.rect(surface, COLOR_PROJECTILE, pygame.draw.rect(surface, COLOR_PROJECTILE,
pygame.Rect(int(p["x"]) - cam_x, int(p["y"]) - cam_y, projectile_size, projectile_size)) pygame.Rect(int(p["x"]) - cam_x, int(p["y"]) - cam_y, projectile_size, projectile_size))
# alles zurücksetzen, wenn der Raum verlassen wird # alles zurücksetzen, wenn der Raum verlassen wird
def clear(self) -> None: def clear(self) -> None:
self.field_rect = None self.field_rect = None