Dies ist eine alte Version des Dokuments!
Projekt Dima und Mike
*Was wollen wir bauen?*
- Hoppscotch. Minigame aus Squid Game
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*
