From a583bf9858e9b21872a249898ad1e7a4ff1c8d30 Mon Sep 17 00:00:00 2001 From: Benjamin Hinz Date: Thu, 5 Mar 2026 15:13:43 +0100 Subject: [PATCH] Ende Unterricht 04.03.26 und Hausaufgabe --- .gitignore | 3 +- editor.py | 151 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 editor.py diff --git a/.gitignore b/.gitignore index 5a7430d..22af123 100644 --- a/.gitignore +++ b/.gitignore @@ -219,4 +219,5 @@ __marimo__/ data/ der_test.py spickzettel.md -.vscode \ No newline at end of file +.vscode +start.bat \ No newline at end of file diff --git a/editor.py b/editor.py new file mode 100644 index 0000000..1c111c3 --- /dev/null +++ b/editor.py @@ -0,0 +1,151 @@ +import pygame +import sys +from scripts.tilemap import * +from scripts.clouds import Clouds +from scripts.utils import load_images + +RENDER_SCALE = 2.0 + +class better_list(list): + def __init__(self, iterable): + super().__init__(iterable) + + +class Editor: + def __init__(self): + pygame.init() + + + pygame.display.set_caption("Editor") + self.screen = pygame.display.set_mode((640, 480)) + self.display = pygame.Surface((320, 240)) + + + + self.clock = pygame.time.Clock() + self.running = True + + self.collision_area = pygame.Rect(50, 50, 300, 50) + self.movement = [False, False, False, False] + + self.assets = { + "decor": load_images("tiles/decor"), + "grass": load_images("tiles/grass"), + "large_decor": load_images("tiles/large_decor"), + "stone": load_images("tiles/stone"), + } + + self.tilemap = Tilemap(self, 16) + self.isJumping = False + self.scroll = [0, 0] + self.tile_list = better_list(self.assets) + self.tile_group = 0 + self.tile_variant = 0 + + self.clicking = False + self.right_clicking = False + self.shifting = False + + self.sekunde = 60 + self.zaehler = 0 + def run(self): + while self.running: + + self.display.fill((0, 0, 0)) + + current_tile_img = self.assets[self.tile_list[self.tile_group]][self.tile_variant].copy() + current_tile_img.set_alpha(100) + + self.display.blit(current_tile_img, (5, 5)) + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + self.running = False + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_ESCAPE: + self.running = False + if event.key == pygame.K_a: + self.movement[0] = True + if event.key == pygame.K_d: + self.movement[1] = True + if event.key == pygame.K_w: + self.movement[2] = True + if event.key == pygame.K_s: + self.movement[3] = True + + if event.key == pygame.K_LSHIFT: + self.shifting = True + + + if event.type == pygame.KEYUP: + + if event.key == pygame.K_a: + self.movement[0] = False + + if event.key == pygame.K_d: + self.movement[1] = False + + if event.key == pygame.K_s: + self.movement[3] = False + + if event.key == pygame.K_w: + self.movement[2] = False + + if event.key == pygame.K_LSHIFT: + self.shifting = False + + if event.type == pygame.MOUSEBUTTONDOWN: + if event.button == 1: + self.clicking = True + if event.button == 3: + self.right_clicking = True + + if event.button == 4: + if self.shifting: + if self.tile_variant >= len(self.assets[self.tile_list[self.tile_group]])-1: + self.tile_variant = 0 + else: + self.tile_variant += 1 + + else: + if self.tile_group >= len(self.tile_list)-1: + self.tile_group = 0 + self.tile_variant = 0 + else: + self.tile_group += 1 + self.tile_variant = 0 + + if event.button == 5: + if self.shifting: + + if self.tile_variant <= 0: + self.tile_variant = len(self.assets[self.tile_list[self.tile_group]])-1 # Lösung vom Problem musste das von oben nehmen: len(self.assets[self.tile_list[self.tile_group]])-1 + + else: + self.tile_variant -= 1 + + else: + if self.tile_group <= 0: + self.tile_group = len(self.tile_list)-1 + self.tile_variant = 0 + + else: + self.tile_group -= 1 + self.tile_variant = 0 + + + self.zaehler += 1 + if self.zaehler >= self.sekunde: + self.zaehler = 0 + print(f"{self.tile_group} + {self.tile_variant}") + self.screen.blit(pygame.transform.scale(self.display, self.screen.get_size()), (0,0)) + pygame.display.update() + self.clock.tick(60) + + + pygame.quit() + sys.exit() + + +editor = Editor() +editor.run()