gf2:projekte:2024:minecraft:2d1gruppe5

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
gf2:projekte:2024:minecraft:2d1gruppe5 [2025/03/31 14:29] braeggerdgf2: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:
Zeile 9: Zeile 11:
 Für genauen Prozess, verfolge Scrumboard und Chat auf Teams. Für genauen Prozess, verfolge Scrumboard und Chat auf Teams.
  
-2. Start des Programmierens, Feststellung erster Probleme Gruppenintern und auf technischer Ebene. Es folgten verschiedene Gespräche zur Findung von Lösungsansätzen sei es für die Gruppendynamik oder für den Code. Lösungen wurden gemeinsam gefunden oder Entscheidungen zur Verkleinerung des Problems getroffen. (Siehe Schwierigkeiten)+2. Start des Programmierens, Feststellung erster Probleme gruppenintern und auf technischer Ebene. Es folgten verschiedene Gespräche zur Findung von Lösungsansätzen sei es für die Gruppendynamik oder für den Code. Lösungen wurden gemeinsam gefunden oder Entscheidungen zur Verkleinerung des Problems getroffen. (Siehe Schwierigkeiten)
  
 3. Zusammenführung der verschiedenen Codeteile durch Leo.  3. Zusammenführung der verschiedenen Codeteile durch Leo. 
Zeile 29: Zeile 31:
  
 Anleitung:  Anleitung: 
-Es ist wichtig, dass nach dem Ausführen des Codes gewartet wird, bis die Musik ertöntbis die Welt betreten werden kann! Es darf sich nicht bewegt werden bis die Musik ertönt.  + 
-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 "Erweiterungen" die Erweiterung "make-code-minecraft-music" eingefügt werden. Zu finden im Code Editor-"Erweiterungen" 
 +Um das Dorf erscheinen zu lassen muss das Word "Blütenstaub" in den Chat geschrieben werden. 
 +Es ist wichtig, dass nach dem Ausführen des Codes gewartet und Stillgestanden wird, bis der Befehl gegeben wird wieder Bewegen zu dürfen! 
 +Damit wilkommen in Thornveil der Stadt des Blütenstaubes und viel Spass. 
 + 
 +<code python> 
 +  mauerlaenge=0#Platzhalter nummer, wird in der Funktion "Stadtmauer" Definiert.#Leo 
 +  mauerbreite=0#Platzhalter nummer, wird in der Funktion "Stadtmauer" Definiert 
 +  BigHouseWidth=0#Platzhalter nummer, wird in der Funktion "ScatterBoneMeal" Definiert 
 +  loading=1   #Fake Boolean um mit 1 und 0 Wahr und Falsch darzustellen, wird in "Loading" verwendet. 
 +  list=[BARREL,CRAFTING_TABLE,STONECUTTER] 
 +  def Stadtmauer(laenge,breite):#Generation der Stadtmauer welche das Dorf umrandet#Leo 
 +      global mauerlaenge 
 +      mauerlaenge=laenge 
 +      global mauerbreite 
 +      mauerbreite=breite 
 +      blocks.fill(STONE_BRICKS,pos(0,0,0), pos(0+laenge,6,0+breite),FillOperation.HOLLOW) 
 +      blocks.fill(AIR,pos(1,0,1), pos(0+laenge-1,7,0+breite-1)) 
 +      blocks.fill(STONE_BRICKS,pos(3,0,0), pos(0+laenge-3,7,0)) 
 +      if laenge%2==0:#Tür der Stadtmauer, immer in der Mitte durch Modulo. 
 +          blocks.fill(AIR, pos(0+laenge/2-1, 0, 0), pos(0+laenge/2+1, 3, 0), FillOperation.REPLACE) 
 +      else: 
 +          blocks.fill(AIR, pos(0+laenge/2, 0, 0), pos(0+laenge/2+1, 2, 0), FillOperation.REPLACE) 
 +  def Pfad(laenge,breite):#Pfad in der mitte des Dorfes, immer in der Mitte durch Modulo.#Leo 
 +      if laenge%2==0: 
 +          blocks.fill(GRASS_PATH, pos(0+laenge/2-1, -1, 1), pos(0+laenge/2+1, -1, 0+breite), FillOperation.REPLACE) 
 +      else: 
 +          blocks.fill(GRASS_PATH, pos(0+laenge/2-0.5, 0-1, 1), pos(0+laenge/2+0.5, -1, 0+breite), FillOperation.REPLACE) 
 +         
 +  def Signal(): #Musik welche das Signal zur fertigstellung des Programms gibt.#Leo 
 +      music.change_tempo_by(300) 
 +      music.play_note(Note.C40) 
 +      music.play_note(Note.D4, 0) 
 +      music.play_note(Note.E4, 0) 
 +      music.play_note(Note.F4, 0) 
 +      music.play_note(Note.B3, 0) 
 +      music.play_note(Note.C4, 0) 
 +      music.play_note(Note.D4, 0) 
 +      music.play_note(Note.E4, 0) 
 +      music.play_note(Note.C5, 0,1000) 
 + 
 +  def Musik():#Musik die spielt sobald der Spieler ins Dorf eintitt.#Leo 
 +      music.set_volume(255) 
 +      music.play_music(MusicDisc.PIGSTEP) 
 + 
 +  def BuildHouse(LAENGE,BREITE,HOEHE,Xoffset,Yoffset,Zoffset):#Dominique#Leo#Victoria#Julien 
 +      blocks.fill(PLANKS_BIRCH, pos(5+Xoffset,-1+Yoffset, 10+Zoffset), pos(5+Xoffset+ LAENGE, 0+Yoffset+HOEHE, 10+BREITE+Zoffset), FillOperation.HOLLOW)         
 +      blocks.place(OAK_DOOR, pos(7+Xoffset, 0+Yoffset, 10+Zoffset)) 
 +      fenster_hoehe_start = 1 
 +      fenster_hoehe_end = 2 
 +      for h in range(fenster_hoehe_start, fenster_hoehe_end + 1):  # Höhe von 1 bis 
 +              blocks.place(GLASS, pos(6+Xoffset, h+Yoffset, 10+Zoffset))  # Fenster links vorne 
 +              blocks.place(GLASS, pos(9+Xoffset, h+Yoffset, 10+Zoffset))  # Fenster rechts vorne 
 +              blocks.place(GLASS, pos(6+Xoffset, h+Yoffset, 10 + BREITE+Zoffset))  # Fenster links hinten 
 +              blocks.place(GLASS, pos(9+Xoffset, h+Yoffset, 10 + BREITE+Zoffset))  # Fenster rechts hinten 
 +      for h in range(fenster_hoehe_start, fenster_hoehe_end + 1):  # Höhe von 1 bis 2 
 +              blocks.place(GLASS, pos(5+Xoffset, h+Yoffset, 12+Zoffset))  # Fenster links außen 
 +              blocks.place(GLASS, pos(5+Xoffset, h+Yoffset, 14+Zoffset))  # Fenster links außen 
 +              blocks.place(GLASS, pos(5+Xoffset+LAENGE,h+Yoffset, 12+Zoffset))  # Fenster rechts außen 
 +              blocks.place(GLASS, pos(5+Xoffset+LAENGE, h+Yoffset, 14+Zoffset))  # Fenster rechts außen 
 +              dach_hoehe = HOEHE // 2 + 2 
 +      for i in range(dach_hoehe): 
 +              blocks.fill(PLANKS_BIRCH, pos(5+Xoffset + i, HOEHE + i+Yoffset, 10+Zoffset), pos(5+Xoffset + LAENGE - i, HOEHE + i+Yoffset, 10 + BREITE+Zoffset), FillOperation.REPLACE)    
 +      blocks.place(BED, pos(1+Xoffset+LAENGE, 0+Yoffset, 8+Zoffset+BREITE)) 
 +      blocks.place(list[randint(0,2)],pos(1+Xoffset+LAENGE+2, 0+Yoffset, 9+Zoffset+BREITE)) 
 +  def ScatterBoneMeal(breite):#Victoria #Leo 
 +      agent.set_item(BONE_MEAL, 64, 1) 
 +      agent.set_assist(PLACE_ON_MOVE, False) 
 +      agent.set_assist(DESTROY_OBSTACLES, False) 
 +      agent.set_slot(1) 
 +      agent.teleport_to_player() 
 +      agent.move(FORWARD, 1) 
 +      agent.move(RIGHT, 3) 
 +      for i in range ((breite-BigHouseWidth)/3-3): 
 +          agent.place(DOWN) 
 +          agent.move(LEFT, 6) 
 +          agent.place(DOWN) 
 +          agent.move(FORWARD, 3) 
 +          agent.move(RIGHT, 6) 
 +      agent.teleport(pos(0, 60, 0), SOUTH) 
 + 
 +  def Detection(laenge,breite):#Leo 
 +      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/2-1<x1<x-laenge/2+1) and (-70<y<5) and (z==z1): 
 +              Musik() 
 +              gameplay.time_set(12000) 
 +              gameplay.title(mobs.target(NEAREST_PLAYER), "Thornveil", "Die Stadt des Blütenstaubes"
 +              ScatterBoneMeal(breite) 
 +      loops.forever(on_forever) 
 + 
 +  def Umrandung(laenge,breite):#Leo 
 +      Stadtmauer(laenge, breite) 
 +      Pfad(laenge, breite) 
 +      Detection(laenge, breite) 
 +     
 +  def BigHouse(length, width, height, Xoffset, Yoffset, Zoffset):#Julien#Victoria#Leo#Dominique 
 +      Xoffset=mauerlaenge/2-length 
 +      Zoffset=mauerbreite-width*2 
 +      global BigHouseWidth 
 +      BigHouseWidth=width 
 +      #Boden 
 +      blocks.fill(WOOL, pos(5+Xoffset, -1+Yoffset, 10+Zoffset), pos(5 + length + Xoffset, -1+Yoffset, 10 + width+Zoffset), FillOperation.REPLACE) 
 +      for h in range(height):#Wände 
 +          blocks.fill(PLANKS_SPRUCE, pos(5+Xoffset, h+Yoffset, 10+Zoffset), pos(5 + length+Xoffset, h+Yoffset, 10+Zoffset), FillOperation.REPLACE) 
 +          blocks.fill(PLANKS_SPRUCE, pos(5+Xoffset, h+Yoffset, 10 + width+Zoffset), pos(5 + length+Xoffset, h+Yoffset, 10 + width+Zoffset), FillOperation.REPLACE) 
 +          blocks.fill(MOSSY_STONE_BRICKS, pos(5+Xoffset, h+Yoffset, 10+Zoffset), pos(5+Xoffset, h+Yoffset, 10 + width+Zoffset), FillOperation.REPLACE) 
 +          blocks.fill(MOSSY_STONE_BRICKS, pos(5 + length+Xoffset, h+Yoffset, 10+Zoffset), pos(5 + length+Xoffset, h+Yoffset, 10 + width+Zoffset), FillOperation.REPLACE) 
 +      #Tür 
 +      blocks.fill(AIR, pos(9+Xoffset, 0+Yoffset, 10+Zoffset), pos(9+Xoffset, 1+Yoffset, 10+Zoffset), FillOperation.REPLACE) 
 +      blocks.place(DARK_OAK_DOOR, pos(9+Xoffset, 0+Yoffset, 10+Zoffset)) 
 +      for h in range(1, 3):#Fenster 
 +          for x in range(7, length + 5, 4): 
 +              blocks.place(GLASS, pos(x+Xoffset, h+Yoffset, 10+Zoffset)) 
 +              blocks.place(GLASS, pos(x+Xoffset, h+Yoffset, 10 + width+Zoffset)) 
 +          for z in range(12, width + 10, 4): 
 +              blocks.place(GLASS, pos(5+Xoffset, h+Yoffset, z+Zoffset)) 
 +              blocks.place(GLASS, pos(5 + length+Xoffset, h+Yoffset, z+Zoffset)) 
 +      roof_height = height // 2 + 2 
 +      for i in range(roof_height):#Dach 
 +          blocks.fill(MOSSY_STONE_BRICKS, pos(4 + i+Xoffset, height + i+Yoffset, 9+Zoffset), pos(6 + length - i+Xoffset, height + i+Yoffset, 11 + width+Zoffset), FillOperation.REPLACE) 
 +      blocks.place(BED, pos(Xoffset+length/2, 0+Yoffset, 0+width*2+Zoffset-3)) 
 +      blocks.place(BED, pos(Xoffset+length/2+1, 0+Yoffset, 0+width*2+Zoffset-3)) 
 +  def Tree(x, y, z,Xoffset,Yoffset,Zoffset):#Julien#Victoria 
 +      for i in range(4):#Stamm bauen 
 +          blocks.place(LOG_OAK, pos(x+Xoffset,y + i+Yoffset, z+Zoffset)) 
 +      for dx in range(-2, 3):#Blätterkrone bauen 
 +          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, pos(x + dx+Xoffset, y + dy+Yoffset, z + dz+Zoffset)) 
 + 
 +  def Fire(Xoffset,Yoffset,Zoffset):#Leo#Dominique 
 +      blocks.place(CAMPFIRE, pos(0+Xoffset,0+Yoffset, 0+Zoffset)) 
 + 
 +  def Villagers(x,y,z):#Leo#Dominique 
 +      mobs.spawn(VILLAGER, pos(0+x, 0+y, 0+z)) 
 + 
 +  def Loading():“Leo 
 +      def on_forever(): 
 +          if loading==1: 
 +              gameplay.title(mobs.target(NEAREST_PLAYER), "Laden...", "Bitte nicht bewegen"
 +              gameplay.title(mobs.target(NEAREST_PLAYER), "", "Bitte nicht bewegen"
 +              loops.pause(1000) 
 +          else:    
 +              loops.pause(infinity) 
 +      loops.forever(on_forever) 
 + 
 +  def Loaded():#Signal um das Wiederholen von "Laden" zu verhindern.“Leo 
 +      def on_forever(): 
 +          global loading 
 +          loading=2 
 +      loops.forever(on_forever) 
 + 
 +  def fin():#End Nachricht#Leo 
 +      for i in range (2): 
 +          gameplay.title(mobs.target(NEAREST_PLAYER), "Geladen", "Viel Spass"
 +          gameplay.title(mobs.target(NEAREST_PLAYER), "", "Viel Spass"
 +          loops.pause(1500) 
 + 
 +  def BuildFountain(x, y, z, start_x, start_y, start_z):#Doppelbrunnen#Victoria#Leo#Julien 
 +      # Unterer Brunnen 
 +      blocks.fill(STONE_BRICKS, pos(start_x, start_y, start_z),pos(start_x + x - 1, start_y, start_z + z - 1), FillOperation.REPLACE) 
 +      blocks.fill(AIR, pos(start_x + 1, start_y, start_z + 1),pos(start_x + x - 2, start_y, start_z + z - 2), FillOperation.REPLACE) 
 +      blocks.fill(TORCH, pos(start_x, start_y + 1, start_z), pos(start_x + x - 1, start_y + 1, start_z + z - 1), FillOperation.REPLACE) 
 +      blocks.fill(WATER, pos(start_x + 1, start_y, start_z + 1),pos(start_x + x - 2, start_y, start_z + z - 2), FillOperation.REPLACE) 
 +      center_x = start_x + x/2-1 
 +      center_z = start_z + z/2-1 
 +      blocks.fill(STONE_BRICKS, pos(center_x, start_y, center_z),pos(center_x, start_y + y, center_z), FillOperation.REPLACE) 
 +      blocks.place(WATER, pos(center_x, start_y+y+1, center_z)) 
 + 
 +  def Ausführen():#Ausführung des Codes bei Chat eingabe.#Leo 
 +      Loading() 
 +      Umrandung(40,70) 
 +      BigHouse(12,12,5,10,0,30)#Xoffset und Zoffset sind hier nur Platzhalter da sie in Der funktion neu Definiert werden. 
 +      Tree(10,0,10,18,0,25)#Baum Kopien mit verschiedenen Positionen. 
 +      Tree(10,-1,10,22,0,50) 
 +      Tree(10,0,10,25,0,10) 
 +      Tree(10,-1,10,5,0,10) 
 +      Tree(10,0,10,-1,0,-5) 
 +      Tree(10,0,10,17,0,-3) 
 +      Tree(10,0,10,0,0,18) 
 +      Tree(10,0,10,-2,0,25) 
 +      Tree(10,0,10,6,0,20) 
 +      Tree(10,0,10,27,0,40) 
 +      Tree(10,0,10,-4,0,45) 
 +      Tree(10,0,10,4,0,39) 
 +      BuildHouse(5, 4, 6, 1,0,10)#Häuser kopien mit verschiedenen Positionen. 
 +      BuildHouse(5, 7, 4, 5,0,-2) 
 +      BuildHouse(5, 5, 6, 6,0,30) 
 +      BuildHouse(5, 4, 5, 20,0,5) 
 +      BuildHouse(5, 4, 4, 25,0,16) 
 +      BuildFountain(5,4,10,27,0,42)#Brunnen 
 +      Villagers(10,0,10)#Dorfbewohner für etwas Lebendigkeit 
 +      Villagers(31,0,20) 
 +      Villagers(22,0,6) 
 +      Villagers(16,0,35) 
 +      Fire(34,0,7)#Lagerfeuer 
 +      Fire(34,0,40) 
 +      Fire(17,0,33) 
 +      Loaded()#Text um dem Spieler anzuzeigen das der Code fertig generiert hat. 
 +      Signal()#Musik weann code ausgeführt 
 +      fin()#Signal den Text zu "Geladen" zu ändern. 
 +  player.on_chat("Blütenstaub", Ausführen) 
 +</code>
  • gf2/projekte/2024/minecraft/2d1gruppe5.1743424194.txt.gz
  • Zuletzt geändert: 2025/03/31 14:29
  • von braeggerd