Wir haben uns für ein Escape Game als Projekt entschieden. Es findet in einer weihnachtlichen Welt statt. Der Spieler befindet sich anfangs in mitten des Lebkuchenhauses der bösen Hexe. Er muss versuchen durch das Lösen von Rätseln, Sammeln von Gegenständen und durch das Überwinden verschiedener Hindernisse, aus dem Lebkuchenhaus zu entkommen. Dafür muss er durch verschiedene Räume gelangen, in dem er bestimmte Rätsel löst. Diese sind meist in einem Buch beschrieben und immer mehr Türen öffnen sich, je mehr davon er löst desto näher zum Ausgang gelangt der Spieler. Dabei läuft ihm aber auch die einte oder andere Kreatur über den Weg, die er bekämpfen muss, um ausbrechen zu können. Darunter ist unter anderem die böse Hexe, der er im letzten Raum begegnet. Im Verlauf des Spiels sollte der Spieler aber einige Utensilien wie ein Schwert gesammelt haben, die ihm bei der Bekämpfung der Hexe behilflich sein sollten. Endlich aus dem Haus, ist der Spieler aber noch nicht ganz fertig. Er muss auch noch seinen Weg durch ein kniffliges Labyrinth finden, bevor er frei ist.
Wir haben ein Labyrinth programmiert, sowie ein kleines Häuschen im Stil eines Lebkuchenhauses gebaut. Die Rätsel der jeweiligen Räumen sind uns mehrheitlich auch gut gelungen.
Einige der verschiedenen Rätsel in den unterschiedlichen Räumen des Hauses, zu programmieren, war für uns eine Herausforderung. Besonders, das im vorletzten Raum, wo der Spieler beim finden eines Heilungstrankes in den letzten Raum teleportiert werden sollte. Wir könnten noch einige Rätsel zu weiteren Räumen erstellen und somit das Escape-Game weiterentwickeln.
Anfangs haben wir uns vorgestellt ein kleines Lebkuchenhaus zu bauen und drain ein Escape-Game zu erstellen. Das hat sich dann auch noch auf ein Labyrinth ausgeweitet und wir haben versucht, eine Hexe ins Spiel zu bringen, die umgebracht werden muss, was dann schlussendlich auch geklappt hat.
In den 1. Raum gelangen:
player.teleport(world(-3, -60, 10))
1.Raum#Raum 1 def isDiamond_Horse_ArmorInChest(): diamond_horse_armorFound = False agent.teleport(world(20,-60,12),NORTH) agent.drop_all(FORWARD) blocks.clone(world(-4, -60, 12), world(-4,-60,12), world(40,-60,30), CloneMask.REPLACE, CloneMode.NORMAL) agent.teleport(world(40, -60, 31), NORTH) agent.destroy(FORWARD) agent.collect_all() for slotNumber in range(1,10): itemID = agent.get_item_detail(slotNumber) if (itemID == 419): diamond_horse_armorFound = True return diamond_horse_armorFound def on_forever(): player.say("Hallo 2") if (isDiamond_Horse_ArmorInChest()==True): blocks.place(blocks.block_with_data(IRON_DOOR, 2),world(-2,-60,8)) player.say("Ein Diamant in der Truhe") else: player.say("Nope, kein Diamand in der Truhe") loops.pause(1000) loops.forever(on_forever)
2. Raumdef on_bookshelf_broken(): player.say("Hallo 3") if (blocks.test_for_block(AIR, world(-4,-59,2))==True): blocks.place(blocks.block_with_data(IRON_DOOR, 1),world(-5,-60,4)) player.say("Bild gefunden") else: player.say("Nope, Bild nicht gefunden") blocks.on_block_broken(BOOKSHELF, on_bookshelf_broken)
3. Raumdef on_flower_pot_broken(): player.say("Oh, was ein schöner Blumentopf") if (blocks.test_for_block(AIR, world(-12,-60,2))==True): blocks.place(blocks.block_with_data(LADDER, 0),world(-7,-58,2)) blocks.place(blocks.block_with_data(LADDER, 0),world(-7,-59,2)) blocks.place(blocks.block_with_data(LADDER, 0),world(-7,-60,2)) player.say("Leiter wurde gebaut") else: player.say("Nope, Leiter wurde nicht gebaut") loops.pause(5000)
4. Raum#letzter und Raum 4 witchSpawned = False spiderSpawned = False def on_travelled_walk(): global witchSpawned global spiderSpawned x = player.position().get_value(Axis.X) y = player.position().get_value(Axis.Y) z = player.position().get_value(Axis.Z) if ((-12<=x<=-6) and (y==-60) and (6<=z<=12)): if (witchSpawned==False): mobs.spawn(WITCH, pos(1, 0, 0)) witchSpawned = True if ((-12<=x<=-7) and (y==-54) and (2<=z<=6)): if (spiderSpawned==False): mobs.spawn(SPIDER, pos(1, 0, 0)) spiderSpawned = True player.on_travelled(WALK, on_travelled_walk)
Labyrinth#Labyrinth Labyrinth= [ [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1], [1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1], [1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,2], [1,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,0,1], [1,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,1], [1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1], [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1], [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1], [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1], [2,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1], [1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1], [1,1,2,1,1,1,1,1,1,1,2,1,1,1,2,1,1,1,1,1], [1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1], [1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1], [1,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1], [1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1], [1,1,2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1], [1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1], [1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1], [1,1,1,1,1,2,1,1,0,0,0,0,0,0,0,0,0,0,0,1], [1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,2,1], [1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1], [1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1], [1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1] ] def baue_lab(): for j in range(0,20,1): for i in range(0,24,1): zahl = Labyrinth[i][j] if zahl == 1: blocks.fill(DARK_OAK_LEAVES , world(i-33, -60, j+20), world(i-33, -57, j+20), FillOperation.REPLACE) # Die Koordinaten sind world(i,4,j) if zahl == 2: blocks.fill(DARK_OAK_LEAVES, world(i-33, -58, j+20), world(i-33, -57, j+20), FillOperation.REPLACE) def loesche(): blocks.fill(AIR, world(-33,-60,20),world(-10,-56,39)) loesche() baue_lab()
5. Raum (Hat leider nicht geklappt, deshalb muss dieses Rätsel nicht gelöst werden und der Raum kann übersprungen werden.)#Raum 5 def isPotionofhealingNotInChest(): PotionofhealingNotFound = False agent.teleport(world(20,-60,12),NORTH) agent.drop_all(FORWARD) blocks.clone(world(8, -60, -100), world(8,-60,-60), world(10,-60,12), CloneMask.REPLACE, CloneMode.NORMAL) agent.teleport(world(8, -60, -99), NORTH) agent.destroy(FORWARD) agent.collect_all() for slotNumber in range(1,10): itemID = agent.get_item_detail(slotNumber) if (itemID == 3738197): PotionofhealingFound = True return PotionofhealingFound def on_forever(): if (isPotionofhealingNotInChest()==True): player.say("Potion of healing in Truhe") player.teleport(world(-12, -60, 8)) else: player.say("Nope, Potion of healing ist in der Truhe") loops.pause(1000) loops.forever(on_forever)