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:2d1gruppe5 [2025/03/31 14:18] – braeggerd | gf2:projekte:2024:minecraft:2d1gruppe5 [2025/05/18 13:43] (aktuell) – glocknerl | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | Gruppe 5 | + | Thornveil – die Stadt des Blütenstaubes |
| + | |||
| + | Gruppe 5 | ||
| Projekt Idee: | Projekt Idee: | ||
| - | Unsere Idee bestand darin eine magische kleine Welt zu errichten, die umgeben wird von einer majestätischen Mauer. Sobald der Code abgerufen wird, entsteht das Dorf. Ist sie fertig entstanden so wird Musik abgespielt und das Dorf ist bereit betreten zu werden. Es ist aber wichtig die Musik abzuwarten!Sobald durch das Thor geschritten wird, so wird ein Weg ersichtlich, | + | Unsere Idee bestand darin eine magische kleine Welt zu errichten, die umgeben wird von einer majestätischen Mauer. Sobald der Code abgerufen wird, entsteht das Dorf. Ist sie fertig entstanden so wird Musik abgespielt und das Dorf ist bereit betreten zu werden. Es ist aber wichtig die Musik abzuwarten! Sobald durch das Thor geschritten wird, so wird ein Weg ersichtlich, |
| Prozess: | Prozess: | ||
| 1. Ideenfindung durch gemeinsames Brainstorming, | 1. Ideenfindung durch gemeinsames Brainstorming, | ||
| + | Für genauen Prozess, verfolge Scrumboard und Chat auf Teams. | ||
| + | |||
| + | 2. Start des Programmierens, | ||
| + | |||
| + | 3. Zusammenführung der verschiedenen Codeteile durch Leo. | ||
| - | 2. Start des Programmierens, | ||
| - | 3. Zusammenführung des verschiedenen Codeteilen durch Leo. | ||
| 4. Fazit, Dieses Projekt lehrte uns nicht nur auf technischer Ebene, sondern vor allem im Bezug auf Arbeitseinteilung, | 4. Fazit, Dieses Projekt lehrte uns nicht nur auf technischer Ebene, sondern vor allem im Bezug auf Arbeitseinteilung, | ||
| Zeile 26: | Zeile 31: | ||
| Anleitung: | Anleitung: | ||
| - | Es ist wichtig, dass nach dem Ausführen des Codes gewartet wird, bis die Musik ertönt, bis die Welt betreten werden kann! Es darf sich nicht bewegt werden | + | |
| - | Code: | + | Eine Flache Welt muss erstellt werden, in dieser Welt kann unabhängig von der Spielerposition der Code ausgeführt werden. |
| + | In diese Welt muss per " | ||
| + | Um das Dorf erscheinen zu lassen muss das Word " | ||
| + | Es ist wichtig, dass nach dem Ausführen des Codes gewartet | ||
| + | Damit wilkommen in Thornveil der Stadt des Blütenstaubes und viel Spass. | ||
| + | |||
| + | <code python> | ||
| + | mauerlaenge=0# | ||
| + | mauerbreite=0# | ||
| + | BigHouseWidth=0# | ||
| + | loading=1 | ||
| + | list=[BARREL, | ||
| + | def Stadtmauer(laenge, | ||
| + | global mauerlaenge | ||
| + | mauerlaenge=laenge | ||
| + | global mauerbreite | ||
| + | mauerbreite=breite | ||
| + | blocks.fill(STONE_BRICKS, | ||
| + | blocks.fill(AIR, | ||
| + | blocks.fill(STONE_BRICKS, | ||
| + | if laenge%2==0:# | ||
| + | blocks.fill(AIR, | ||
| + | else: | ||
| + | blocks.fill(AIR, | ||
| + | def Pfad(laenge, | ||
| + | if laenge%2==0: | ||
| + | blocks.fill(GRASS_PATH, | ||
| + | else: | ||
| + | blocks.fill(GRASS_PATH, | ||
| + | |||
| + | def Signal(): #Musik welche das Signal zur fertigstellung des Programms gibt.#Leo | ||
| + | music.change_tempo_by(300) | ||
| + | music.play_note(Note.C4, 0) | ||
| + | music.play_note(Note.D4, | ||
| + | music.play_note(Note.E4, | ||
| + | music.play_note(Note.F4, | ||
| + | music.play_note(Note.B3, | ||
| + | music.play_note(Note.C4, | ||
| + | music.play_note(Note.D4, | ||
| + | music.play_note(Note.E4, | ||
| + | music.play_note(Note.C5, | ||
| + | |||
| + | def Musik():# | ||
| + | music.set_volume(255) | ||
| + | music.play_music(MusicDisc.PIGSTEP) | ||
| + | |||
| + | def BuildHouse(LAENGE, | ||
| + | blocks.fill(PLANKS_BIRCH, | ||
| + | blocks.place(OAK_DOOR, | ||
| + | fenster_hoehe_start = 1 | ||
| + | fenster_hoehe_end = 2 | ||
| + | for h in range(fenster_hoehe_start, | ||
| + | blocks.place(GLASS, | ||
| + | blocks.place(GLASS, | ||
| + | blocks.place(GLASS, | ||
| + | blocks.place(GLASS, | ||
| + | for h in range(fenster_hoehe_start, | ||
| + | blocks.place(GLASS, | ||
| + | blocks.place(GLASS, | ||
| + | blocks.place(GLASS, | ||
| + | blocks.place(GLASS, | ||
| + | dach_hoehe = HOEHE // 2 + 2 | ||
| + | for i in range(dach_hoehe): | ||
| + | blocks.fill(PLANKS_BIRCH, | ||
| + | blocks.place(BED, | ||
| + | blocks.place(list[randint(0, | ||
| + | def ScatterBoneMeal(breite):# | ||
| + | agent.set_item(BONE_MEAL, | ||
| + | agent.set_assist(PLACE_ON_MOVE, | ||
| + | agent.set_assist(DESTROY_OBSTACLES, | ||
| + | agent.set_slot(1) | ||
| + | agent.teleport_to_player() | ||
| + | agent.move(FORWARD, | ||
| + | agent.move(RIGHT, | ||
| + | for i in range ((breite-BigHouseWidth)/ | ||
| + | agent.place(DOWN) | ||
| + | agent.move(LEFT, | ||
| + | agent.place(DOWN) | ||
| + | agent.move(FORWARD, | ||
| + | agent.move(RIGHT, | ||
| + | agent.teleport(pos(0, | ||
| + | |||
| + | def Detection(laenge, | ||
| + | x1 = player.position().get_value(Axis.X) | ||
| + | y1 = player.position().get_value(Axis.Y) | ||
| + | z1 = player.position().get_value(Axis.Z) | ||
| + | |||
| + | x = player.position().get_value(Axis.X) | ||
| + | y = player.position().get_value(Axis.Y) | ||
| + | z = player.position().get_value(Axis.Z) | ||
| + | |||
| + | def on_forever(): | ||
| + | |||
| + | x = player.position().get_value(Axis.X) | ||
| + | y = player.position().get_value(Axis.Y) | ||
| + | z = player.position().get_value(Axis.Z) | ||
| + | |||
| + | if(x-laenge/ | ||
| + | | ||
| + | gameplay.time_set(12000) | ||
| + | | ||
| + | ScatterBoneMeal(breite) | ||
| + | loops.forever(on_forever) | ||
| + | |||
| + | def Umrandung(laenge, | ||
| + | Stadtmauer(laenge, | ||
| + | Pfad(laenge, | ||
| + | Detection(laenge, | ||
| + | |||
| + | def BigHouse(length, | ||
| + | Xoffset=mauerlaenge/ | ||
| + | Zoffset=mauerbreite-width*2 | ||
| + | global BigHouseWidth | ||
| + | BigHouseWidth=width | ||
| + | #Boden | ||
| + | blocks.fill(WOOL, | ||
| + | for h in range(height):# | ||
| + | blocks.fill(PLANKS_SPRUCE, | ||
| + | blocks.fill(PLANKS_SPRUCE, | ||
| + | blocks.fill(MOSSY_STONE_BRICKS, | ||
| + | blocks.fill(MOSSY_STONE_BRICKS, | ||
| + | #Tür | ||
| + | blocks.fill(AIR, | ||
| + | blocks.place(DARK_OAK_DOOR, | ||
| + | for h in range(1, 3):# | ||
| + | for x in range(7, length + 5, 4): | ||
| + | blocks.place(GLASS, | ||
| + | blocks.place(GLASS, | ||
| + | for z in range(12, width + 10, 4): | ||
| + | blocks.place(GLASS, | ||
| + | blocks.place(GLASS, | ||
| + | roof_height = height // 2 + 2 | ||
| + | for i in range(roof_height):# | ||
| + | blocks.fill(MOSSY_STONE_BRICKS, | ||
| + | blocks.place(BED, | ||
| + | blocks.place(BED, | ||
| + | def Tree(x, y, z, | ||
| + | for i in range(4):# | ||
| + | blocks.place(LOG_OAK, | ||
| + | for dx in range(-2, 3):# | ||
| + | for dz in range(-2, 3): | ||
| + | for dy in range(3, 6): | ||
| + | if abs(dx) + abs(dz) < 3: #Verhindert zu eckige Form | ||
| + | blocks.place(LEAVES_OAK, | ||
| + | |||
| + | def Fire(Xoffset, | ||
| + | blocks.place(CAMPFIRE, | ||
| + | |||
| + | def Villagers(x, | ||
| + | mobs.spawn(VILLAGER, | ||
| + | |||
| + | def Loading(): | ||
| + | def on_forever(): | ||
| + | if loading==1: | ||
| + | gameplay.title(mobs.target(NEAREST_PLAYER), | ||
| + | gameplay.title(mobs.target(NEAREST_PLAYER), | ||
| + | loops.pause(1000) | ||
| + | else: | ||
| + | loops.pause(infinity) | ||
| + | loops.forever(on_forever) | ||
| + | |||
| + | def Loaded():# | ||
| + | def on_forever(): | ||
| + | global loading | ||
| + | loading=2 | ||
| + | loops.forever(on_forever) | ||
| + | |||
| + | def fin():#End Nachricht# | ||
| + | for i in range (2): | ||
| + | gameplay.title(mobs.target(NEAREST_PLAYER), | ||
| + | gameplay.title(mobs.target(NEAREST_PLAYER), | ||
| + | loops.pause(1500) | ||
| + | |||
| + | def BuildFountain(x, | ||
| + | # Unterer Brunnen | ||
| + | blocks.fill(STONE_BRICKS, | ||
| + | blocks.fill(AIR, | ||
| + | blocks.fill(TORCH, | ||
| + | blocks.fill(WATER, | ||
| + | center_x = start_x + x/2-1 | ||
| + | center_z = start_z + z/2-1 | ||
| + | blocks.fill(STONE_BRICKS, | ||
| + | blocks.place(WATER, | ||
| + | |||
| + | def Ausführen():# | ||
| + | Loading() | ||
| + | Umrandung(40, | ||
| + | BigHouse(12, | ||
| + | Tree(10, | ||
| + | Tree(10, | ||
| + | Tree(10, | ||
| + | Tree(10, | ||
| + | Tree(10, | ||
| + | Tree(10, | ||
| + | Tree(10, | ||
| + | Tree(10, | ||
| + | Tree(10, | ||
| + | Tree(10, | ||
| + | Tree(10, | ||
| + | Tree(10, | ||
| + | BuildHouse(5, | ||
| + | BuildHouse(5, | ||
| + | BuildHouse(5, | ||
| + | BuildHouse(5, | ||
| + | BuildHouse(5, | ||
| + | BuildFountain(5, | ||
| + | Villagers(10, | ||
| + | Villagers(31, | ||
| + | Villagers(22, | ||
| + | Villagers(16, | ||
| + | Fire(34, | ||
| + | Fire(34, | ||
| + | Fire(17, | ||
| + | Loaded()# | ||
| + | Signal()# | ||
| + | fin()# | ||
| + | player.on_chat(" | ||
| + | </ | ||