From b1f8b56b039b8b95300f1431ecbaad2740525918 Mon Sep 17 00:00:00 2001 From: Lukas Kammerhofer Date: Fri, 8 May 2026 15:22:24 +0200 Subject: [PATCH] troubleshooting, adding desks in the map --- src/desk.py | 15 +++++++++++---- src/map.py | 19 +++++++++++++------ 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/desk.py b/src/desk.py index 83e57ff..fbb8edd 100644 --- a/src/desk.py +++ b/src/desk.py @@ -11,7 +11,7 @@ class Desk: self.rect = pygame.Rect(self.x, self.y, DESK_WIDTH, DESK_HEIGHT) try: - self.image = pygame.image.load("assets/furniture/desk.png").convert_alpha() + self.image = pygame.image.load("assets/furniture/table.png").convert_alpha() # scale the sprite to match collision rect self.image = pygame.transform.scale(self.image, (DESK_WIDTH, DESK_HEIGHT)) except Exception as e: @@ -23,8 +23,15 @@ class Desk: return self.rect.colliderect(player_rect) # draw table - use sprite and as fallback a brown rect - def draw(self, screen): + def draw(self, screen: pygame.Surface, cam_x: int = 0, cam_y: int = 0): + # Kamera Offset beim zeichnen abziehen + draw_rect = pygame.Rect( + self.rect.x - cam_x, + self.rect.y - cam_y, + self.rect.width, + self.rect.height + ) if self.image: - screen.blit(self.image, self.rect) + screen.blit(self.image, draw_rect) else: - pygame.draw.rect(screen, (193, 69, 19), self.rect) \ No newline at end of file + pygame.draw.rect(screen, (193, 69, 19), draw_rect) \ No newline at end of file diff --git a/src/map.py b/src/map.py index 4c28231..20420ff 100644 --- a/src/map.py +++ b/src/map.py @@ -59,17 +59,17 @@ class Map: # die Räume als Pixel-Rechtecke, Spalte und Zeile aus der Map * tile_size # die Reihenfolge ist: x - y - breite - höhe | in Pixel self.rooms: dict[str, pygame.Rect] = { - "Room 102": pygame.Rect(2 * tile_size, 2 * tile_size, 17 * tile_size, 10 * tile_size), - "Room 103": pygame.Rect(21 * tile_size, 2 * tile_size, 17 * tile_size, 10 * tile_size), - "Room 105": pygame.Rect(40 * tile_size, 2 * tile_size, 17 * tile_size, 10 * tile_size), + "Room 102": pygame.Rect(2 * tile_size, 2 * tile_size, 15 * tile_size, 10 * tile_size), + "Room 103": pygame.Rect(27 * tile_size, 2 * tile_size, 15 * tile_size, 10 * tile_size), + "Room 105": pygame.Rect(44 * tile_size, 2 * tile_size, 15 * tile_size, 10 * tile_size), } # soll automatisch einen Tisch ind er MItte des Raumes erstellen self.desks: dict[str, list[Desk]] = {} for room_name, room_rect in self.rooms.items(): # berechnet die Mitte des Raumes, zieht die Tischgröße ab, damit er wirklich zentriert ist - center_x = room_rect.center_x - DESK_WIDTH // 2 - center_y = room_rect.center_y - DESK_HEIGHT // 2 + center_x = room_rect.centerx - DESK_WIDTH // 2 + center_y = room_rect.centery - DESK_HEIGHT // 2 # erstell einen Tisch pro Raum und speichert ihn self.desks[room_name] = [Desk(center_x, center_y)] @@ -86,7 +86,7 @@ class Map: def is_accessible(self, column: int, row: int) -> bool: # gibt True zurück, wenn der Spieler das Tile betreten darf - return self.get_tile(column, row) in ("R", "D,", "H", "S") + return self.get_tile(column, row) in ("R", "D", "H", "S") # Funktion, um die Map zu erstellen @@ -141,6 +141,13 @@ class Map: # blit() fixiert den Text auf dem Bildschirm surface.blit(font.render(text, True, color_text), (px, py)) + # Desks werden gezeichnet + for desk_list in self.desks.values(): + for desk in desk_list: + desk.draw(surface, cam_x, cam_y) + + + # Gibt ein Raum Rechteck zurück - zum Prüfen, ob eine gegebene Position im Raum ist def get_room_rect(self, column: int, row: int): # rechnet Tile Koordinaten in Pixel um