Was wir bauen: Wir bauen eine ähnliche Version des Empire State Buildings und programmieren darin ein Rätsel, indem man einen Schlüsselcode finden muss, mit dem man in den Tresor kommt. In unserer Welt gibt es zudem auch noch mehrere Easter Eggs, die man entdecken kann. Das Rätsel befindet sich in einem Labyrinth in dem es zusätzlich noch Fallen und versteckte Unannehmlichkeiten gibt.
Ziele:
1. Das Empire State Building bauen:
def Hochhaus(b,t,h) : blocks.fill(z, pos(0, 0, 0), pos(b, h, 0), FillOperation.REPLACE) blocks.fill(z, pos(0, 0, 0), pos(0, h, t), FillOperation.REPLACE) blocks.fill(z, pos(b, 0, 0), pos(b, h, t), FillOperation.REPLACE) blocks.fill(z, pos(0, 0, t), pos(b, h, t), FillOperation.REPLACE)
Zuerst wollten wir versuchen, das Gebäude nur mit Code zu erstellen. Wir wollten aber eine sehr genaue Struktur, darum war es für uns schwierig das ganze nur zu programmieren. Deswegen haben wir uns dann dazu entschieden, 2 Türme, der Untere breiter und länger als der Obere, aufeinander zu platzieren und dann die Details von Hand zu bauen.
Das ist das fertige Empire State Building von unten.
Das ist das fertige Empire State Building von einem ecken der Stadt aus.
2. Spiel programmieren
x= 4
-diese Variable ist verantwortlich dafür, dass die Falltür aufgeht.
zeit=300 def on_on_chat(): player.teleport(world(0, -60, 0)) player.on_chat("spawn", on_on_chat)
-Mit dieser Definition wird man zum Spawn der Welt teleportiert wenn man „spawn“ in den Chat schreibt.
def on_on_chat3(): player.say("schreib <stecken geblieben> in den Textchat") player.on_chat("hilfe", on_on_chat3)
-Wenn man das Labyrinth geschafft hat, jedoch nicht in den nächsten Raum kommt, muss man „hilfe“ in den Chat schreiben damit einem im Chat zugeflüstert wird, dass man „stecken geblieben“ in den Chat schreiben muss. Die Definition „stecken geblieben“ teleportiert einem in den nächsten Raum.
def set_x(): global x x = 9 blocks.place(blocks.block_with_data(IRON_TRAPDOOR, x), world(-39, -44, -76)) loops.pause(2000) blocks.place(blocks.block_with_data(IRON_TRAPDOOR, 4), world(-39, -44, -76)) player.on_chat("5623", set_x)
-Durch diese Definition öffnet sich eine Falltür in dem Raum vor dem Tresor mit welcher man in einen neuen Raum gelangt welcher ein Rätsel zum Code für den Tresor beinhaltet. Den Code für die Falltür muss man im Labyrinth suchen, denn dort sind die einzelnen Teile versteckt. Durch das erste „blocks.place“ wird die Falltür in die offene Position gebracht. „loops.pause(2000) ist dafür da, dass die Falltür für zwei Sekunden offen bleibt, bevor sie durch das zweite „blocks.place“ wieder geschlossen wird.
def on_on_chat6(): player.teleport(world(-27, -62, -117)) player.on_chat("start", on_on_chat6)
-Mit dieser Definition wird man zum Startpunkt des Spiels teleportiert und kann somit mit dem Spielen beginnen.
def on_on_chat7(): #Man wird zum nächsten Hinderniss teleportiert falls man stecken geblieben ist player.teleport(world(-36, -43, -80)) player.on_chat("stecken geblieben", on_on_chat7)
-Mit dieser Definition kann man sich wenn man nicht weiter kommt in den nächsten Raum teleportieren.
def on_on_chat8(): player.teleport(world(-30, 60, -76)) player.on_chat("Aussicht", on_on_chat8)
-Wenn man es in den Tresor geschafft hat, wird einem dort verraten, dass man indem man „Aussicht“ in den Chat schreibt auf die Aussichtsplattform an der spitze des Empire state Buildings teleportiert wird.
def Tresor(): blocks.place(blocks.block_with_data(IRON_DOOR, 5), world(-38, -43, -74)) loops.pause(2000) blocks.place(blocks.block_with_data(IRON_DOOR, 1), world(-38, -43, -74)) player.on_chat("Tresor", Tresor)
-Mit Hilfe dieser Definition wird die Tür zum Tresor geöffnet wenn man „Tresor“ in den Chat schreibt. Dieses Passwort ist in einem separaten Raum als Rätsel zu finden. Durch das erste „blocks.place“ wird die Tür geöffnet. Durch „loops.pause(2000)“ bleibt die Tür für 2 Sekunden offen und wird durch das zweite „blocks.place“ wieder geschlossen.
Eines der Schilder mit einer der Codezahlen darauf.
Der Tresor mit Gold und dem NPC drin.
Die Tür und Falltür, welche nur mit dem Code geöffnet werden können.
3. Kulisse
def Hochhaus(b,t,h) : blocks.fill(z, pos(0, 0, 0), pos(b, h, 0), FillOperation.REPLACE) blocks.fill(z, pos(0, 0, 0), pos(0, h, t), FillOperation.REPLACE) blocks.fill(z, pos(b, 0, 0), pos(b, h, t), FillOperation.REPLACE) blocks.fill(z, pos(0, 0, t), pos(b, h, t), FillOperation.REPLACE)
Mit dieser Definition wurden die Hochhäuser rund um das Empire State Building platziert. Man kann mit Hilfe der Variabeln „b,t,h“ das Hochhaus genau so bauen wie man es sich vorstellt, denn „b“ ist die Breite, „t“ die Tiefe und „h“ die Höhe des Hochhauses. Mit diesen variabeln konnten wir also jedes Hochhaus genau so bauen wie wir es benötigten. Wir haben „pos()“ kooridaten verwendet anstatt „world()“ koordinaten, da wir so einfach um die Welt laufen konnten und die Häuser platzieren konnten ohne gross etwas am Code ändern zu müssen.
def strasse(): blocks.fill(blocks.block_with_data(ANDESITE, 1), world(-12, -61, -10), world(-187, -61, 0), FillOperation.REPLACE) for i in range(-12, -187, -1): blocks.place(blocks.block_with_data(POLISHED_ANDESITE_STAIRS, 3), world(i, -60, -10)) blocks.place(blocks.block_with_data(POLISHED_ANDESITE_STAIRS, 2), world(i, -60, 0)) for i in range(-12, -187, -3): blocks.place(BLOCK_OF_QUARTZ,world(i,-61,-5)) blocks.place(BLOCK_OF_QUARTZ,world(i+1,-61,-5))
Mit Hilfe dieser Definition haben wir die Strasse um die Stadt gebaut. Der Teil „blocks.fill“ sorgt dafür, dass die Strasse aus Andesit gebaut wird. Das erste „for i in range“ bestimmt die Position der Gehwege auf beiden Seiten. Das zweite „for i in range“ bestimmt die Position des Mittelstreifens und baut ihn so, dass es jedes mal einen Abstand von einem Block zwischen den Streifen hat.
Die Strasse welche um die Stadt führt.
Die programmierten Hochhäuser von unten gesehen.
4. Extras
def on_on_chat4(): player.teleport(world(-6, -59, 225)) player.on_chat("rot", on_on_chat4)
Diese Definition wird dafür gebraucht, den Spieler zu einem Easteregg zu teleportieren, falls er es gefunden hat. Das Codewort kann man von einem der vielen NPCs auf der Welt erhalten. Wenn man dieses Codewort dann in den Chat eingibt, wird man zu dem Easteregg hin teleportiert.
def on_on_chat8(): player.teleport(world(-30, 60, -76)) player.on_chat("Aussicht", on_on_chat8)
Wenn man es in den Tresor geschafft hat, ist dort ein NPC, welcher einem das Codewort für die Aussichtsplattform gibt. Wenn man dieses dann in den Chat eingibt, wird man auf die Aussichtsplattform teleportiert auf welcher man eine schöne Aussicht über die Stadt hat und auch noch ein zweites Easteregg finden kann.
In diesem Bild ist die Aussichtsplattform zu sehen.
In diesem Bild ist das EasterEgg zu sehen. (Kult)
—-
Ein weiteres Easteregg. (Kunstausstellung eines Künstlers)
Schwer erkennbar - Ein weiteres Easteregg welches erschrecken soll.
Einer der NPCs auf den Strassen New Yorks.
Eine Gang welche gerade ihr treffen im Park hat.
5. Fazit
Eine grosse Herausforderung für uns, war das Programmieren der Falltüre im Game. Es war zuerst sehr schwierig, herauszufinden wie genau es gemacht werden muss, damit die Falltüre mit dem Code öffnet. Sehr zeitaufwändig war auch das Schliessen der Falltüre zu programmieren nach dem sie geöffnet wurde. Die Falltüre im allgemeine hat uns also grosse Schwierigkeiten bereitet.
Obwohl wir am Anfang etwas Mühe hatten mit dem Programmieren und ursprünglich nicht recht wussten, was genau wir eigentlich entwickeln wollten, haben sich die Umstände mit der Zeit immer mehr verbessert und wir sind wie in eine Art Flow gekommen. Somit konnten wir dann ziemlich schnell auch weitere Dinge realisieren und neue Ideen und Verbesserungen zu unserem Projekt hinzufügen.
Wir haben das Gefühl, dass wir im Team die Arbeit gut aufteilen konnten und jeder versucht hat den Anderen so gut wie möglich zu unterstützen. Die Zusammenarbeit ist somit also relativ gut gelungen und jeder hat seinen Beitrag zum Projekt geleistet.
Wir fanden diese Idee mit dem Minecraft Projekt sehr gelungen. Jeder kann seinen individuellen Interessen so nachgehen und auch interaktiv lernen. Wir finden es ist genau die richtige Kombination zwischen Spass und Lernen und würden deshalb dieses Projekt unbedingt weiterempfehlen.