Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| gf2:projekte:2024:minecraft:2d2gruppe3 [2025/04/13 22:22] – bluml | gf2:projekte:2024:minecraft:2d2gruppe3 [2025/04/15 11:03] (aktuell) – marroc | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| Gruppe 3 | Gruppe 3 | ||
| + | |||
| Idee: Eine Burg mit Türmchen; siehe Bild in Teamschat | Idee: Eine Burg mit Türmchen; siehe Bild in Teamschat | ||
| + | |||
| Ziel: Den versteckten Schatz finden, welcher in der Burg versteckt ist. | Ziel: Den versteckten Schatz finden, welcher in der Burg versteckt ist. | ||
| + | |||
| - Verwinkelte Räume (Labyrinth) | - Verwinkelte Räume (Labyrinth) | ||
| + | <code python> | ||
| **Code** | **Code** | ||
| # ------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------ | ||
| - | |||
| # Nutzung | # Nutzung | ||
| - | |||
| # In der Burg ist ein Schatz versteckt, den es zu finden gilt! | # In der Burg ist ein Schatz versteckt, den es zu finden gilt! | ||
| - | |||
| # | # | ||
| - | |||
| # Befehle | # Befehle | ||
| - | |||
| # • " | # • " | ||
| - | |||
| # • " | # • " | ||
| - | |||
| # ------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------ | ||
| - | |||
| MIN_PADDING = 3 # Mindestabstand zwischen Räumen und Aussenwand | MIN_PADDING = 3 # Mindestabstand zwischen Räumen und Aussenwand | ||
| - | |||
| SIMPLIFY = 0 # Burg vereinfachen um sie schneller zu generieren | SIMPLIFY = 0 # Burg vereinfachen um sie schneller zu generieren | ||
| - | |||
| TOWERS = True # Türme generieren | TOWERS = True # Türme generieren | ||
| - | |||
| T_RADIUS = 3 # Radius der Türme | T_RADIUS = 3 # Radius der Türme | ||
| - | |||
| seed = 54321 # Startwert für Pseudozufallszahlen | seed = 54321 # Startwert für Pseudozufallszahlen | ||
| - | |||
| # ------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------ | ||
| - | |||
| # Die Koordinaten im Code folgen der Einteilung von Minecraft, nach der y die | # Die Koordinaten im Code folgen der Einteilung von Minecraft, nach der y die | ||
| - | |||
| # Höhe ist. | # Höhe ist. | ||
| - | |||
| # Bei blocks.fill wurde FillOperation.REPLACE zwecks Leserlichkeit weggelassen, | # Bei blocks.fill wurde FillOperation.REPLACE zwecks Leserlichkeit weggelassen, | ||
| - | |||
| # da es sich um den Standartwert handelt. | # da es sich um den Standartwert handelt. | ||
| - | |||
| # ------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------ | ||
| - | |||
| CHUNK_HEIGHT = 6 # Festgelegt durch Höhe der Burgsegmente | CHUNK_HEIGHT = 6 # Festgelegt durch Höhe der Burgsegmente | ||
| - | |||
| L = 0 | L = 0 | ||
| - | |||
| materials = [STONE_BRICKS, | materials = [STONE_BRICKS, | ||
| - | |||
| start_pos = player.position() | start_pos = player.position() | ||
| - | |||
| # | # | ||
| - | |||
| # Hilfsfunktionen | # Hilfsfunktionen | ||
| - | |||
| # | # | ||
| - | |||
| # Relative Koordinaten unabhängig von der Bewegung des Spielers während der Ausführung | # Relative Koordinaten unabhängig von der Bewegung des Spielers während der Ausführung | ||
| - | |||
| def position(x, y, z): | def position(x, y, z): | ||
| - | |||
| return start_pos.add(positions.create(x, | return start_pos.add(positions.create(x, | ||
| - | | ||
| # Funktion um Wert eine Position zu erhalten (da die Funktion position() mit .get_value() sonst nur Weltkoordinaten ausgibt) | # Funktion um Wert eine Position zu erhalten (da die Funktion position() mit .get_value() sonst nur Weltkoordinaten ausgibt) | ||
| - | |||
| def get(pos: Position, axis): | def get(pos: Position, axis): | ||
| - | |||
| return pos.to_world().get_value(axis) - start_pos.get_value(axis) | return pos.to_world().get_value(axis) - start_pos.get_value(axis) | ||
| - | | ||
| # Pseudozufallszahlengenerator https:// | # Pseudozufallszahlengenerator https:// | ||
| - | |||
| def lcg(value=0): | def lcg(value=0): | ||
| - | |||
| global seed | global seed | ||
| - | | ||
| a, c, m = 1664525, 1013904223, 2**32 # Werte aus https:// | a, c, m = 1664525, 1013904223, 2**32 # Werte aus https:// | ||
| - | | ||
| if value == 0: | if value == 0: | ||
| - | | ||
| seed = (seed * a + c) % m | seed = (seed * a + c) % m | ||
| - | | ||
| return seed / m | return seed / m | ||
| - | | ||
| else: | else: | ||
| - | | ||
| return ((value * a + c ) % m) / m | return ((value * a + c ) % m) / m | ||
| - | | ||
| | | ||
| # | # | ||
| - | |||
| # Burg | # Burg | ||
| - | |||
| # | # | ||
| - | |||
| # Funktion zum bauen der Segmente | # Funktion zum bauen der Segmente | ||
| - | |||
| def chunk_builder(): | def chunk_builder(): | ||
| - | |||
| blocks.saveStructure(" | blocks.saveStructure(" | ||
| - | | ||
| blocks.fill(AIR, | blocks.fill(AIR, | ||
| - | | ||
| for i in range(2): | for i in range(2): | ||
| - | | ||
| blocks.fill(materials[0], | blocks.fill(materials[0], | ||
| blocks.fill(materials[0], | blocks.fill(materials[0], | ||
| Zeile 129: | Zeile 83: | ||
| blocks.fill(materials[0], | blocks.fill(materials[0], | ||
| blocks.fill(materials[0], | blocks.fill(materials[0], | ||
| - | | ||
| | | ||
| blocks.fill(materials[0], | blocks.fill(materials[0], | ||
| Zeile 136: | Zeile 89: | ||
| blocks.fill(materials[0], | blocks.fill(materials[0], | ||
| blocks.fill(materials[0], | blocks.fill(materials[0], | ||
| - | | ||
| # Öffnungen für Durchgänge | # Öffnungen für Durchgänge | ||
| - | | ||
| blocks.fill(AIR, | blocks.fill(AIR, | ||
| blocks.fill(AIR, | blocks.fill(AIR, | ||
| Zeile 155: | Zeile 106: | ||
| blocks.fill(AIR, | blocks.fill(AIR, | ||
| blocks.fill(AIR, | blocks.fill(AIR, | ||
| - | | ||
| # Stufen zur Verschönerung der Durchgänge | # Stufen zur Verschönerung der Durchgänge | ||
| - | | ||
| blocks.place(blocks.block_with_data(materials[2], | blocks.place(blocks.block_with_data(materials[2], | ||
| blocks.place(blocks.block_with_data(materials[2], | blocks.place(blocks.block_with_data(materials[2], | ||
| - | |||
| blocks.place(blocks.block_with_data(materials[2], | blocks.place(blocks.block_with_data(materials[2], | ||
| blocks.place(blocks.block_with_data(materials[2], | blocks.place(blocks.block_with_data(materials[2], | ||
| - | | ||
| | | ||
| blocks.place(blocks.block_with_data(materials[2], | blocks.place(blocks.block_with_data(materials[2], | ||
| blocks.place(blocks.block_with_data(materials[2], | blocks.place(blocks.block_with_data(materials[2], | ||
| - | | ||
| | | ||
| blocks.fill(blocks.block_with_data(materials[2], | blocks.fill(blocks.block_with_data(materials[2], | ||
| blocks.fill(blocks.block_with_data(materials[2], | blocks.fill(blocks.block_with_data(materials[2], | ||
| - | | ||
| for x in range(16): | for x in range(16): | ||
| - | | ||
| if x % 3 == 0: | if x % 3 == 0: | ||
| - | | ||
| for z in range(16): | for z in range(16): | ||
| - | | ||
| if z % 3 == 0: | if z % 3 == 0: | ||
| - | | ||
| player.execute("/ | player.execute("/ | ||
| # Treppen-Segment | # Treppen-Segment | ||
| - | | ||
| blocks.fill(materials[1], | blocks.fill(materials[1], | ||
| blocks.fill(AIR, | blocks.fill(AIR, | ||
| - | |||
| for step in range(2, 14): # Treppenstufen erstellen | for step in range(2, 14): # Treppenstufen erstellen | ||
| - | | ||
| material = materials[3] if step % 2 == 0 else materials[0] | material = materials[3] if step % 2 == 0 else materials[0] | ||
| blocks.fill(material, | blocks.fill(material, | ||
| - | | ||
| | | ||
| # Speichern der Strukturen | # Speichern der Strukturen | ||
| - | | ||
| blocks.saveStructure(" | blocks.saveStructure(" | ||
| blocks.loadStructure(" | blocks.loadStructure(" | ||
| blocks.saveStructure(" | blocks.saveStructure(" | ||
| - | |||
| blocks.place(IRON_BLOCK, | blocks.place(IRON_BLOCK, | ||
| Zeile 214: | Zeile 149: | ||
| blocks.place(DIAMOND_BLOCK, | blocks.place(DIAMOND_BLOCK, | ||
| blocks.place(DIAMOND_BLOCK, | blocks.place(DIAMOND_BLOCK, | ||
| - | | ||
| # Schatz-Segment speichern | # Schatz-Segment speichern | ||
| - | | ||
| blocks.saveStructure(" | blocks.saveStructure(" | ||
| - | | ||
| blocks.loadStructure(" | blocks.loadStructure(" | ||
| - | | ||
| return 1 | return 1 | ||
| - | | ||
| # Funktion zum Zusammensetzen der Segmente | # Funktion zum Zusammensetzen der Segmente | ||
| - | |||
| def build_core(length, | def build_core(length, | ||
| - | |||
| treasure = Math.round(lcg() * length * width * height) | treasure = Math.round(lcg() * length * width * height) | ||
| - | | ||
| for x in range(length): | for x in range(length): | ||
| - | | ||
| for y in range(height): | for y in range(height): | ||
| - | | ||
| for z in range(width): | for z in range(width): | ||
| Zeile 254: | Zeile 179: | ||
| if y == 0: | if y == 0: | ||
| blocks.fill(materials[0], | blocks.fill(materials[0], | ||
| - | elif y == height - 1: | ||
| - | blocks.fill(AIR, | ||
| Zeile 390: | Zeile 313: | ||
| main(54, 18, 38, position(0, 0, 0)) | main(54, 18, 38, position(0, 0, 0)) | ||
| + | </ | ||