gf2:projekte:minecraft:2d1gruppe2

Dies ist eine alte Version des Dokuments!


Projekt Dima und Mike

*Was wollen wir bauen?*

  • 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.

Inhalt

  • 1. Code ist für das Bauen der Arena. Dima & Mike only!
  • 2. Code ist für das Minigame. Jeder
  • 3. Code ist für diejenigen, die alleine Spielen (Neue Flachwelt erstellen dann ausführen).

* 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..


(1. Code) *Le Code zum Bauen der Arena*

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
 
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)
 
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()

Unsere Welt sah am Schluss sehr interessant aus..


(2. Code) *Le Code für das Minigame*

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 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!)
 
teleport()
loops.forever(minigame) #Lässt minigame() immer aktiv sein


(3. Code) *Le Code für die Solospieler unter uns*

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
  • gf2/projekte/minecraft/2d1gruppe2.1674848047.txt.gz
  • Zuletzt geändert: 2023/01/27 20:34
  • von staempflim