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 (Code 1&2 kombiniert, Neue Flachwelt erstellen dann ausführen)
- 4. Link zur Präsentation
* 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
* Klickt auf das Bild links, um das gif zu sehen.
* Wie das Spiel funktioniert :')
(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
4. Link zur Präsentation