Minecraft Projekt

das Lebkuchenhäuschen

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.

Fazit

Was ist uns gut gelungen?

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.


Was könnten wir noch weiterentwickeln und verbessern?

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.


Was war unsere ursprüngliche Idee?

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.

unsere Welt

verwendete Codes

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. Raum
def 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. Raum
def 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)
  • gf2/projekte/2023/minecraft/2d2gruppe7.txt
  • Zuletzt geändert: 2024/01/23 23:03
  • von meuwlyj