======Jump and fall====== Unser Projekt besteht aus zwei Parcours. Zu Beginn wird in einem kleinen Raum gestartet. Dort warten wir bis alle da sind. Ist dies der Fall, so beginnt der Wettkampf. Der erste Teil, startet in der Höhe. Das Ziel, ganz einfach; so schnell wie möglich nach unten zu kommen. Da die Spieler aber im Abenteuermodus sind, muss man sich gut entscheiden, auf welchen Block man sich fallen lassen will. Abhängig davon, auf welcher Art von Block man landet, geschehen unterschiedliche Dinge. Die Liste der Blöcke mit ihren Eigenschaften finden Sie am Schluss des Beitrages. Der zweite Teil ist ein Jump and Run, mit leichten Veränderungen durch den Code. Wichtig ist hier im richtigen Moment abzuspringen sowie die "guten" Blöcke zu erwischen. Zu einem Zeitpunkt werden Sie auch fliegen müssen, aber keine Sorge, durch den Code erhalten Sie Flügel. Verwenden können Sie diese bei einem erneuten Sprung in der Luft. =====Was kommt woher in unserm Projekt?===== ==== Im Code, automatisch: ==== - Spielerteleportationen - Blockeffekte - Spawnpunkte wenn Koordinaten betreten - Jegliche Soundeffekte - Zonen im Jump and Run, in denen man direkt stirbt (Sonst fällt man erst 3 Jahre) - Feuerwerk (Die Explosionen gehen nicht, deswegen haben wir es mit sound ersetzt) - Elytra direkt anziehen und ersetzen ==== Im Code, per Chat gesteuert: ==== - Zufällig platzierte Glasblöcke im Dropper (reset) - Countdown am Anfang des Droppers (start) ==== In Commandblocks: ==== - Jumpboost Effekt im Jump and Run ==== Von Hand gebaut: ==== - Plattformen - Wände beim Dropper, sowie Boden und unsere Kunst im Boden. - Spawnbereich - Ganzes Jump and Run ==== Welt herunterladen ==== Folgend ist unsere Welt, mit welcher sie unser Spiel verwenden und durchleben können. Vergessen Sie aber nicht, die notwendigen Codes zu verwenden. {{ :group:gf:2d1:projekt_mike_timo.mcworld |}} ==== Spieler Code ==== Den folgenden Code benötigen alle Spieler, um unser Spiel korrekt verwenden zu können. Sobald das Programm gestartet ist, kann der Spass beginnen. def new_block(a,b,c): #platziert einen neuen Block bei a,b,c Materialien = [RED_STAINED_GLASS,ORANGE_STAINED_GLASS,YELLOW_STAINED_GLASS,GREEN_STAINED_GLASS,BLUE_STAINED_GLASS,MAGENTA_STAINED_GLASS,GRAY_STAINED_GLASS,BLACK_STAINED_GLASS] lis = randint(0, 7) blocks.place(Materialien[lis], world(a, b, c)) def on_forever(): x = player.position().get_value(Axis.X) #für die Koordinaten y = player.position().get_value(Axis.Y) z = player.position().get_value(Axis.Z) if (123> x > 78) and (123> z > 78) and (y<248): #dropper Bereich while (123> x > 78) and (123> z > 78) and (y<248): #solange man im Bereich des Droppers ist x = player.position().get_value(Axis.X) y = player.position().get_value(Axis.Y) z = player.position().get_value(Axis.Z) if blocks.test_for_block(RED_STAINED_GLASS, world(x, y-1, z)): #Aktion bei rotem Glas: heilt den Spieler und wechselt nach kurzer Zeit zu einem anderen Block xnow = x ynow = y znow = z player.execute("effect @s instant_health 2") loops.pause(2000) new_block(xnow,ynow-1,znow) if blocks.test_for_block(ORANGE_STAINED_GLASS, world(x, y-1, z)): #Aktion bei orangenem Glas: wird zu einem Honigblock, welcher klebt und den Absprung erschwert xnow = x ynow = y znow = z blocks.place(HONEY_BLOCK, world(xnow, ynow-1, znow)) if blocks.test_for_block(YELLOW_STAINED_GLASS, world(x, y-1, z)): #Aktion bei gelbem Glas: höher springen + gleiten player.execute("effect @s jump_boost 1 5") player.execute("effect @s slow_falling 3") if blocks.test_for_block(GREEN_STAINED_GLASS, world(x, y-1, z)): #Aktion bei grünem Glas: eingesperrt und ein Creeper explodiert im Spieler xnow = x ynow = y znow = z blocks.fill(BEDROCK, world(xnow-1, ynow-1, znow-1), world(xnow+1, ynow+2, znow+1)) blocks.fill(AIR, world(xnow, ynow, znow), world(xnow, ynow+1, znow)) mobs.spawn(CREEPER, world(xnow, ynow, znow)) loops.pause(5000) blocks.fill(AIR, world(xnow-1, ynow-1, znow-1), world(xnow+1, ynow+2, znow+1)) loops.pause(2000) new_block(xnow,ynow-1,znow) if blocks.test_for_block(BLUE_STAINED_GLASS, world(x, y-1, z)): #Aktion bei blauem Glas: eine grössere Fläche aus Eis entsteht, womit man weiter springen kann xnow = x ynow = y znow = z blocks.fill(BLUE_ICE, world(xnow-1, ynow-1, znow-1), world(xnow+1, ynow-1, znow+1)) loops.pause(3000) blocks.fill(AIR, world(xnow-1, ynow-1, znow-1), world(xnow+1, ynow-1, znow+1)) loops.pause(2000) new_block(xnow,ynow-1,znow) if blocks.test_for_block(MAGENTA_STAINED_GLASS, world(x, y-1, z)): #Aktion bei magenta Glas: ein effekt, mit welchem man langsam nach oben kommt wird gegeben player.execute("effect @s levitation 11") if blocks.test_for_block(GRAY_STAINED_GLASS, world(x, y-1, z)): #Aktion bei grauem Glas: mit diesem Effekt leidet man weniger am Fallschaden für kurze Zeit player.execute("effect @s resistance 1 2") if blocks.test_for_block(BLACK_STAINED_GLASS, world(x, y-1, z)): #Aktion bei schwarzem Glas: Allen Spielern wird die Sicht eingeschränkt, jedoch bommt der Spieler Schaden player.execute("effect @a blindness 3") player.execute("effect @s poison 1 2") if (364> x > 196) and (201> z > 116): #jump and run while (364> x > 190) and (201> z > 116): #solange man im Bereich des jump and runs ist x = player.position().get_value(Axis.X) y = player.position().get_value(Axis.Y) z = player.position().get_value(Axis.Z) if (y <= 203): #ende damit man nicht zu lange fallen muss player.execute("kill @s") x = player.position().get_value(Axis.X) y = player.position().get_value(Axis.Y) z = player.position().get_value(Axis.Z) if blocks.test_for_block(REDSTONE_BLOCK, world(x, y-1, z)): #Aktion beim Redstone Block: Spieler wird zurückgesetzt player.execute("kill @s") if blocks.test_for_block(RED_GLAZED_TERRACOTTA, world(x, y-2, z)): #Aktion bei rotem glasierten Terracotta: Der Spawnpoint wird aktualisiert player.execute("spawnpoint") if blocks.test_for_block(MAGENTA_GLAZED_TERRACOTTA, world(x, y-1, z)): #Aktion bei pinkem glasierten Terracotta: Der Spieler bekommt Flügel zum gleiten player.execute("replaceitem entity @s slot.armor.chest 0 elytra 1") if blocks.test_for_block(GRAY_GLAZED_TERRACOTTA, world(x, y-3, z)): #Aktion bei grauem glasierten Terracotta: Ersetzt die Flügel damit der Parcout nicht einfacher ist player.execute("replaceitem entity @s slot.armor.chest 0 leather_chestplate 1") if (290 ==== Code für den Spielstart ==== Diesen Code muss ein Teilnehmer bereit halten, um mit "reset" im Chat die Blöcke im Dropper zu entfernen und neue platzieren zu lassen. Mit "start" im Chat kommt die Animation für den Dropper, und die Barrieren werden entfernt. player.on_chat("start", countdown) player.on_chat("reset", neustart) def eins(): player.execute("playsound fire.ignite @a") blocks.place(WHITE_CONCRETE, world(101, 251, 98)) blocks.place(WHITE_CONCRETE, world(102, 251, 99)) blocks.fill(WHITE_CONCRETE, world(103, 251, 100), world(98, 251, 100)) blocks.fill(WHITE_CONCRETE, world(97, 251, 99), world(97, 251, 101)) loops.pause(1000) blocks.fill(AIR, world(97, 251, 97), world(103, 251, 103)) def zwei(): player.execute("playsound fire.ignite @a") blocks.place(WHITE_CONCRETE, world(102, 251, 98)) blocks.fill(WHITE_CONCRETE, world(103, 251, 101), world(103, 251, 99)) blocks.place(WHITE_CONCRETE, world(102, 251, 102)) blocks.place(WHITE_CONCRETE, world(101, 251, 101)) blocks.place(WHITE_CONCRETE, world(100, 251, 100)) blocks.place(WHITE_CONCRETE, world(99, 251, 99)) blocks.place(WHITE_CONCRETE, world(98, 251, 98)) blocks.fill(WHITE_CONCRETE, world(97, 251, 98), world(97, 251, 102)) loops.pause(1000) blocks.fill(AIR, world(97, 251, 97), world(103, 251, 103)) def drei(): player.execute("playsound fire.ignite @a") blocks.place(WHITE_CONCRETE, world(102, 251, 98)) blocks.place(WHITE_CONCRETE, world(98, 251, 102)) blocks.fill(WHITE_CONCRETE, world(103, 251, 99), world(103, 251, 101)) blocks.fill(WHITE_CONCRETE, world(102, 251, 102), world(101, 251, 102)) blocks.place(WHITE_CONCRETE, world(100, 251, 101)) blocks.fill(WHITE_CONCRETE, world(99, 251, 102), world(98, 251, 102)) blocks.fill(WHITE_CONCRETE, world(97, 251, 101), world(97, 251, 99)) blocks.place(WHITE_CONCRETE, world(98, 251, 98)) loops.pause(1000) blocks.fill(AIR, world(97, 251, 97), world(103, 251, 103)) def start(): player.execute("playsound mob.enderdragon.growl @a") blocks.fill(AIR, world(92, 253, 92), world(108, 254, 108)) def countdown(): drei() zwei() eins() start() def neustart(): blocks.fill(GLASS_PANE, world(102, 253, 108), world(98, 254, 92)) blocks.fill(GLASS_PANE, world(104, 253, 107), world(96, 254, 93)) blocks.fill(GLASS_PANE, world(105, 253, 106), world(95, 254, 94)) blocks.fill(GLASS_PANE, world(106, 253, 105), world(94, 254, 95)) blocks.fill(GLASS_PANE, world(107, 253, 104), world(93, 254, 96)) blocks.fill(GLASS_PANE, world(108, 253, 102), world(92, 254, 98)) blocks.fill(AIR, world(101, 253, 107), world(99, 254, 93)) blocks.fill(AIR, world(103, 253, 106), world(97, 254, 94)) blocks.fill(AIR, world(104, 253, 105), world(96, 254, 95)) blocks.fill(AIR, world(105, 253, 104), world(95, 254, 96)) blocks.fill(AIR, world(106, 253, 103), world(94, 254, 97)) blocks.fill(AIR, world(107, 253, 101), world(93, 254, 99)) clear() zufallsblocks() def zufallsblocks(): Materialien = [RED_STAINED_GLASS,ORANGE_STAINED_GLASS,YELLOW_STAINED_GLASS,GREEN_STAINED_GLASS,BLUE_STAINED_GLASS,MAGENTA_STAINED_GLASS,GRAY_STAINED_GLASS,BLACK_STAINED_GLASS] for i in range(1, 4000): x = randint(78, 122) y = randint(78, 122) z = randint(24, 248) lis = randint(0, 7) blocks.place(Materialien[lis], world(x, z, y)) def clear(): for q in range(24, 251, 1): blocks.fill(AIR, world(122, q, 78), world(78, q+1, 122))