gf2:projekte:minecraft:2d1gruppe2

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:minecraft:2d1gruppe2 [2023/01/23 09:23] staempflimgf2:projekte:minecraft:2d1gruppe2 [2023/02/26 08:41] (aktuell) marroc
Zeile 5: Zeile 5:
 *Was wollen wir bauen?* *Was wollen wir bauen?*
   * Hoppscotch. Minigame aus Squid Game   * Hoppscotch. Minigame aus Squid Game
 +  * Die Idee kam recht spontan, jedoch recht einfach verständlich. Als erstes sollte man den Grundriss des Minigames bauen. Bei uns die Arena. Dann wie das Game funktioniert und am Ende Dekos.
  
 ---- ----
Zeile 10: Zeile 11:
   * 1. Code ist für das Bauen der Arena. Dima & Mike only!   * 1. Code ist für das Bauen der Arena. Dima & Mike only!
   * 2. Code ist für das Minigame. Jeder   * 2. Code ist für das Minigame. Jeder
-  * 3. Code ist für diejenigen, die alleine Spielen (Neue Flachwelt erstellen dann ausführen).+  * 3. Code ist für diejenigen, die alleine Spielen (Code 1&2 kombiniert, Neue Flachwelt erstellen dann ausführen) 
 +  * 4Link zur Präsentation
  
-*Le Code (Zum Bauen der Arena)* 
 ---- ----
 {{ :gf2:projekte:minecraft:ezgif-1-f359bb74d8.gif?direct&400|}} {{ :gf2:projekte:minecraft:ezgif-1-f359bb74d8.gif?direct&400|}}
-//Klickt auf das Bild rechts, um das gif zu sehen.  +// 
-So sieht die Arena im Spiel aus, den Code unten ausführen, um diese Konstruktion zu bekommen..//+  * Klickt auf das Bild rechts, um das gif zu sehen.  
 +  So sieht die Arena im Spiel aus, den Code unten ausführen, um diese Konstruktion zu bekommen..//
 ---- ----
-<code python>+ 
 +(1. Code) *Le Code zum Bauen der Arena* 
 +<code python arena.py>
 x1 = 21 #Anfangs- x-Koordinaten (Des Spielbereiches) x1 = 21 #Anfangs- x-Koordinaten (Des Spielbereiches)
 x2 = 58 #End- x-Koordinaten (Des Spielbereiches) x2 = 58 #End- x-Koordinaten (Des Spielbereiches)
Zeile 131: Zeile 135:
 buildArena() buildArena()
 </code> </code>
-Unsere Welt sah am Schluss sehr interessant aus.. +
 ---- ----
 {{:gf2:projekte:minecraft:bildschirmfoto_2023-01-13_um_10.56.37.png?nolink&600|}} {{:gf2:projekte:minecraft:bildschirmfoto_2023-01-13_um_10.56.37.png?nolink&600|}}
 +Unsere Welt sah am Schluss sehr interessant aus.. 
 ---- ----
-*Le Code (Für das Funktionieren des Minigames)* +(2. Code) *Le Code für das Minigame*
-----+
 <code python> <code python>
 x1 = 21 #Anfangs- x-Koordinaten (Des Spielbereiches) x1 = 21 #Anfangs- x-Koordinaten (Des Spielbereiches)
Zeile 179: Zeile 183:
 </code> </code>
 {{:gf2:projekte:minecraft:ezgif-1-6d9baa5bab.gif?direct&400|}} {{:gf2:projekte:minecraft:ezgif-1-6d9baa5bab.gif?direct&400|}}
 +//
 +  * Klickt auf das Bild links, um das gif zu sehen. 
 +  * Wie das Spiel funktioniert :')//
 +----
 +(3. Code) *Le Code für die Solospieler unter uns*
 +<code python>
 +x1 = 21 #Anfangs- x-Koordinaten (Des Spielbereiches)
 +x2 = 58 #End- x-Koordinaten (Des Spielbereiches)
 +y1 = -30 #Anfangs- y-Koordinaten
 +y2 = -60 #End- y-Koordinaten
 +z1 = -26 #Anfangs- z-Koordinaten
 +z2 = -49 #End- z-Koordinaten
 +ySpiel = -42 #Höhe des Spiels (Der Plattformen)
 + 
 +def gamerules(): #Passt die Welt an
 +    gameplay.time_set(DayTime.MIDNIGHT) #Macht die Welt dunkel
 +    gameplay.set_game_rule(DAYLIGHT_CYCLE, False) #Es kann nicht mehr hell werden
 +    gameplay.set_game_rule(WEATHER_CYCLE, False) #Wetter ändert nicht mehr
 +    gameplay.set_weather(CLEAR) #Macht klares Wetter
 +    gameplay.set_game_mode(ADVENTURE, mobs.target(NEAREST_PLAYER)) #Macht, dass der Spieler nicht mehr abbauen kann
 + 
 +def arenaWalls(): #Baut die vier Wände der Arena
 +    a = world(x1, y2, z2)
 +    b = world(x1, y2, z1)
 +    c = world(x2, y2, z1)
 +    d = world(x2, y2, z2)
 +    a1 = world(x1, y1, z2)
 +    b1 = world(x1, y1, z1)
 +    c1 = world(x2, y1, z1)
 +    d1 = world(x2, y1, z2)
 +    blocks.fill(GRAY_CONCRETE, a, d1)
 +    blocks.fill(RED_CONCRETE, a, b1)
 +    blocks.fill(RED_CONCRETE, d, c1)
 +    blocks.fill(GRAY_CONCRETE, c, b1)
 +    blocks.fill(BLACK_CONCRETE, a, c) #Boden
 + 
 +def dach(): #Baut das schwarze Dach
 +    for height in range(-29, -17, 4):
 +        blocks.fill(BLACK_STAINED_GLASS, world(x1, height, z1), world(x2, height, z2))
 + 
 +def endrodDach(): #Baut die Belichtung im Dach
 +    for i in range(1, 50):
 +        x = randint(x1, x2) #Nimmt einen zufälligen Wert von x und z
 +        y = (-28)
 +        z = randint(z1, z2)
 +        blocks.place(END_ROD, world(x, y, z))
 +        x = randint(x1, x2) #Nochmal andere zufällige Werte, damit es nicht die gleichen sind
 +        z = randint(z1, z2)
 +        blocks.place(END_ROD, world(x, y+2, z))
 +        x = randint(x1, x2) #''
 +        z = randint(z1, z2)
 +        blocks.place(END_ROD, world(x, y+4, z))
 +        x = randint(x1, x2) #''
 +        z = randint(z1, z2)
 +        blocks.place(END_ROD, world(x, y+6, z))
 + 
 +def endrodWall(): #Baut Belichtung an der Seite
 +    for i in range(1, 100):
 +        x = randint(x1+1, x2-1) #Zufallige Werte ±1 => Innerhalb Arena
 +        y = randint(y1, y2+1)
 +        z = z1-1
 +        blocks.place(END_ROD, world(x, y, z))
 +        x = randint(x1+1, x2-1) #''
 +        y = randint(y1, y2+1)
 +        z = z2+1
 +        blocks.place(END_ROD, world(x, y, z))
 + 
 +def eisplattform(): #Baut die Eisplattformen des Minispiels
 +    x = 27
 +    z = -35
 +    for ice in range(0, 28, 4):
 +        blocks.fill(BLUE_ICE, world(x+ice, ySpiel, z), world(x+1+ice, ySpiel, z-1))
 +        blocks.fill(BLUE_ICE, world(x+ice, ySpiel, z-4), world(x+1+ice, ySpiel, z-5))
 + 
 +def spielerplattform(): #Plattform des Startes und Zieles
 +    blocks.fill(BLACK_CONCRETE, world(x1+1, ySpiel, z1-7), world(x1+3, ySpiel, z2+7))
 +    blocks.fill(BLACK_CONCRETE, world(x2-1, ySpiel, z1-7), world(x2-3, ySpiel, z2+7))
 +    for deko in range(1, 11, 9):
 +        blocks.place(AIR, world(x1+3, ySpiel, z1-6-deko)) #Dekoration (Weniger 'Blockig')
 +        blocks.place(AIR, world(x2-3, ySpiel, z1-6-deko))
 + 
 +def buildHiddenMechanic(): #Baut das, was für das Funktionieren des Minigames benötigt wird (Im Spiel sieht man es nicht).
 +    x = 27
 +    z = -35
 +    for coal in range(0, 28, 4):
 +        linksOdaRechts = randint(1, 2)
 +        if (linksOdaRechts==1):
 +            blocks.fill(COAL_BLOCK, world(x+coal, y2-1, z), world(x+1+coal, y2-1, z-1))
 +        if (linksOdaRechts==2):
 +            blocks.fill(COAL_BLOCK, world(x+coal, y2-1, z-4), world(x+1+coal, y2-1, z-5))
 + 
 +def enddach(): #Baut das Dach (Das Schwarze + Belichtung)
 +    dach()
 +    endrodDach()
 + 
 +def buildArena(): #Baut die ganze Arena (Wände, Plattformen, Belichtung)
 +    arenaWalls()
 +    spielerplattform()
 +    eisplattform()
 +    buildHiddenMechanic()
 +    endrodWall()
 +    enddach()
 + 
 +def destroyArena(): #Entfernt das ganze Gebaute
 +    for destroy in range(0, 38, 1):
 +        blocks.fill(AIR, world(x1+destroy, y2, z2), world(x1+destroy, y2+40, z1))
 +    blocks.fill(GRASS, world(x1, y2-1, z1), world(x2, y2-1, z2))
 + 
 +def on_chat(): #Wenn restart im Chat geschrieben wird..
 +    eisplattform()
 +    blocks.fill(GRASS, world(x1, y2-1, z1), world(x2, y2-1, z2))
 +    buildHiddenMechanic() #Arena bleibt bestehen, gute und schlechte Plattformen werden neu durchmischt und Plattformen neugebaut
 +player.on_chat("restart", on_chat)
 + 
 +def teleport(): #Teleportiert den Spieler zur Arena und setzt den Wiedereinstiegspunkt
 +    player.teleport(world(x1+2, ySpiel+1, z1-11))
 +    player.execute("/spawnpoint @s ~~~")
 + 
 +def minigame(): #Code für das Minigame
 +    x = player.position().get_value(Axis.X) #Nimmt die derzeitige Position des Spielers
 +    y = player.position().get_value(Axis.Y)
 +    z = player.position().get_value(Axis.Z)
 +    if (x2 > x > x1) and (y2 < y < y1) and (z1 > z > z2): #der Bereich Hoppscotch (Des Minigames)
 +        while (x2 > x > x1) and (ySpiel < y < y1) and (z1 > z > z2): #Solange man im Bereiches der Arena und __über__ der Höhe der Plattformen ist
 +            x = player.position().get_value(Axis.X) #Wenn die Zeile oben passt, muss das Programm nochmal die Position bekommen
 +            y = player.position().get_value(Axis.Y)
 +            z = player.position().get_value(Axis.Z)
 + 
 +            if blocks.test_for_block(COAL_BLOCK, world(x, y-20, z)): #Befehl aktiviert, sobald man auf über COAL_BLOCK, versteckt unter der Erde, tritt
 +                xnow = x
 +                ynow = y
 +                znow = z
 +                blocks.fill(AIR, world(xnow-1, ynow-1, znow-1), world(xnow+1, ynow-1, znow+1)) #Füllt ein Feld von der grösse 3x3 unter den eigenen Füssen mit Luft
 +                player.execute("/kill @s")
 + 
 +        while (x2 > x > x1) and (y2 < y < ySpiel) and (z1 > z > z2): #Solange man im Bereiches der Arena und __unter__ der Höhe der Plattformen ist
 +            x = player.position().get_value(Axis.X)
 +            y = player.position().get_value(Axis.Y)
 +            z = player.position().get_value(Axis.Z)
 + 
 +            if (x2 > x > x1) and (y2 < y < ySpiel-2) and (z1 > z > z2): #Solange man im Bereich Hoppscotch ist
 +                player.execute("/kill @s") #Tötet den Spieler (Meistens 2x hintereinander, keine Angst!)
 +
 +player.teleport(world(30, -59, -38)) #Zuerst teleport, damit __alles__ gebaut wird (Ohne fehlen Wände, da der Code sonst ausser Reichweite ist).
 +gamerules()
 +destroyArena()
 +buildArena()
 +teleport()
 +loops.forever(minigame) #Lässt minigame() immer aktiv sein
 +</code>
 +
 +4. Link zur Präsentation
 +  * https://eduetatfr-my.sharepoint.com/:p:/g/personal/mike_staempfli_studentfr_ch/ET4dbIu2GuFDiDS6oZpksOUBTH6EOL4Ef64V-6-vFUYyLw?e=wZRTVE
  • gf2/projekte/minecraft/2d1gruppe2.1674462195.txt.gz
  • Zuletzt geändert: 2023/01/23 09:23
  • von staempflim