Welt -Idee: Zoo mit verschiedenen Bereichen (je nach Tierart)

-Organisation:Zu zweit ein Gehege/Bereich bauen, diese werden schlussendlich durch Wege verbunden, damit es nach einem einheitlichen Zoo aussieht

-Zeitliche Planung:

  1. Bis und während Weihnachtsferien: Plan zeichnen→ Planung der Bereiche, Gehege und Eingang bauen
    1. Bauernhof
    2. Streichelzoo (Ziegen, Hasen etc.)
    3. Pandagehege
    4. Aquarium gross mit Durchgang
    5. Eingangsbereicht→ Tickethaus
  2. Nach den Weihnachtsferien bis Abgabe: Verbindungen, Tiere setzen etc.
    1. Alle Tier setzen
    2. Wege bauen
    3. evtl. Deko wie Pflanzen oder Schrift

Unsere Arbeit:

Definition für unsere Eingangshäuschen

<code>
def haus():
    blocks.fill(PLANKS_DARK_OAK, world(18, -61, 31), world(8, -57, 37), FillOperation.HOLLOW)
    blocks.fill(BLOCK_OF_QUARTZ, world(18, -61, 31), world(8, -61, 37), FillOperation.REPLACE)
    blocks.fill(AIR, world(18,-59,34), world(18,-59,35),FillOperation.REPLACE)
    blocks.fill(AIR, world(8,-59,34), world(8,-59,35),FillOperation.REPLACE)
    blocks.fill(AIR, world(17,-60, 31), world(17, -59, 31), FillOperation.REPLACE)
    blocks.place(OAK_DOOR, world(17, -60, 31))
    blocks.fill(BLOCK_OF_QUARTZ, world(16, -60, 35), world(17, -59, 33), FillOperation.REPLACE)
    blocks.fill(AIR, world(17, -60, 34), world(17, -59, 34), FillOperation.REPLACE)
    blocks.fill(BLOCK_OF_QUARTZ, world(9, -60, 33), world(10, -59, 35), FillOperation.REPLACE)
    blocks.fill(AIR, world(9, -60, 34), world(9, -59, 34), FillOperation.REPLACE)
    blocks.fill(BOOKSHELF, world(9, -60, 36), world(17, -60, 36), FillOperation.REPLACE)
    blocks.place(FLOWER_POT, world(9, -59, 35))
    blocks.place(FLOWER_POT, world(17, -59, 35))
 

Definition für unseren Eingangsbereich

def eingang():
    blocks.fill(PLANKS_DARK_OAK, world(3, -56, 37), world(25, -56, 37), FillOperation.REPLACE)
    blocks.fill(PLANKS_OAK, world(25,-60, 37), world(25, -57, 37), FillOperation.REPLACE)
    blocks.fill(PLANKS_OAK, world(25, -57, 37), world(19, -57, 37), FillOperation.REPLACE)
    blocks.fill(PLANKS_OAK, world(3, -60, 37), world(3, -57, 37), FillOperation.REPLACE)
    blocks.fill(PLANKS_OAK, world(3, -57, 37), world(7, -57, 37), FillOperation.REPLACE)
 

Definition für unsere Ställe

def hütte(x,z,y,l,b,):
    blocks.fill(PLANKS_DARK_OAK, world(x, z-1, y), world(x+b, z+4, y+l), FillOperation.HOLLOW)
    blocks.fill(HAY_BLOCK, world(x, z-1, y), world(x+b, z-1, y+l), FillOperation.REPLACE)
    blocks.fill(AIR, world(x+b,z,y+l+1), world(x+b,z+3,y-1),FillOperation.REPLACE)
    blocks.fill(AIR, world(x,z,y-1), world(x,z+1,y-1),FillOperation.REPLACE)
    blocks.fill(PLANKS_DARK_OAK, world(x+b-1, z+4, y+l), world(x+b-1, z+4, y), FillOperation.REPLACE)
    blocks.place(DARK_OAK_DOOR, world(x, z, y-1))
 

Definition für unsere Mauer, welche den Zoo umschliesst

def mauer(x,z,y,l,b):
    blocks.fill(PLANKS_DARK_OAK, world(x, z, y), world(x+b, z+4, y+l), FillOperation.REPLACE)
 

Definition für unsere Gehege (Gitter)

def gehege(x,z,y,l,b):
    blocks.fill(IRON_BARS, world(x, z, y), world(x+b,z+4, y), FillOperation.REPLACE)
    blocks.fill(IRON_BARS, world(x, z, y), world(x,z+4, y+l), FillOperation.REPLACE)
 

Definition für unsere Gehege (Holzbereich)

def zaun(x,z,y,l,b):
    blocks.fill(JUNGLE_FENCE, world(x,z,y), world(x, z,y+l), FillOperation.REPLACE)
    blocks.fill(JUNGLE_FENCE, world(x,z,y), world(x+b,z,y), FillOperation.REPLACE)
 

Definition für unsere Voliere

def voliere(x,z,y,l,b):
    blocks.fill(GLASS_PANE, world(x, z-1, y), world(x+b,z+11,y+l), FillOperation.HOLLOW)
    blocks.fill(GRASS, world(x, z-1, y), world(x+b,z-1,y+l), FillOperation.HOLLOW)
    blocks.fill(GLASS, world(x, z+11, y), world(x+b,z+11,y+l), FillOperation.HOLLOW)
 

Definition für den Picknickbereich (Tische)

def tisch(x,z,y):
    a=0
    while(a<4):
        blocks.place(blocks.block_with_data(ANVIL, 3), world(x, z, y))
        blocks.place(blocks.block_with_data(QUARTZ_STAIRS, 3), world(x, z, y-1))
        blocks.place(blocks.block_with_data(QUARTZ_STAIRS, 2), world(x, z, y+1))
        a=a+1
        x=x+1
    blocks.place(JUNGLE_SAPLING, world(x+3, z, y))
 

Definition für das Setzen der Tiere durch den Agenten

def spawn(tier,anzahl,x,z,y):
    agent.teleport(world(x,z, y),WEST)
    agent.set_item(tier, 1, 1)
    agent.set_slot(1)
    a=0
    while(a<anzahl):
        agent.place(FORWARD)
        a=a+1
 

EIngangsbereich

haus()
spawn(SPAWN_VILLAGER, 1, 18, -60, 34)
spawn(SPAWN_VILLAGER,1,10,-60,34)
eingang()
blocks.print("DER", RED_CONCRETE, world(-15, -60, 38), EAST)
blocks.print("ZOO", RED_CONCRETE, world(27, -60, 38), EAST)

Gittergehege

gehege(36,-60,15,14, 10)
gehege(26,-60,29,7,20)
gehege(36,-60,0,15,10)
gehege(47, -60, -10, -50, 31)
 

Ställe

hütte(53,-60,29,-14,-6)
hütte(53,-60,15,-15,-6)
hütte(53,-60,36,-7,-6)
hütte(85,-60,-10,-50,-6)
 

Holzzäune

zaun(0,-60,28,8, -13)
zaun(-14,-60,17,19,-14)
zaun(-14,-60,4,12,-14)
zaun(-14,-60,4,-17,-14)
zaun(0,-60,-5,-8,-14)
 

Umrandung

mauer(2,-60,37,0,-30)
mauer(-29,-60,37,-50,0)
mauer(26,-60,37,0,31)
mauer(58,-60,37,-37,0)
mauer(58,-60,0,0,31)
mauer(89,-60,-1,-59,0)
mauer(53,-60,-1,-3,0)
mauer(54,-60,-5,0,30)
mauer(89, -60, -61, 0, -42)
mauer(46,-60,-61,0,-31)
mauer(15,-60,-60,1,0)
mauer(85,-60,-4,-5,0)
 

Mitarbeitertür

blocks.fill(AIR, world(85, -60, -7), world(85, -59, -7), FillOperation.REPLACE)
blocks.place(OAK_DOOR, world(85, -60, -7))
 
 

Papageienhaus

voliere(-2,-60,0,20,30)
 

Aquarium

blocks.fill(BLACKSTONE, world(-40, -61, -14), world(15, -50, -58), FillOperation.Hollow)
blocks.fill(SAND, world(-40, -61, -14),world(15, -61, -58))
blocks.fill(AIR, world(6, -60, -14), world(8, -58, -14), FillOperation.REPLACE)
 
 
blocks.fill(GLASS_PANE, world(9, -60, -15), world(9, -57, -52), FillOperation.REPLACE)
blocks.fill(GLASS_PANE, world(8, -60, -52), world(-34, -57, -52), FillOperation.REPLACE)
blocks.fill(GLASS_PANE, world(-34, -60, -52), world(-34, -57, -20), FillOperation.REPLACE)
blocks.fill(GLASS_PANE, world(-33, -60, -20), world(4, -57, -20), FillOperation.REPLACE)
 
 
blocks.fill(GLASS_PANE, world(5, -60, -15), world(5, -57, -48), FillOperation.REPLACE)
blocks.fill(GLASS_PANE, world(5, -60, -48), world(-30, -57, -48), FillOperation.REPLACE)
blocks.fill(GLASS_PANE, world(-30, -60, -47), world(-30, -57, -24), FillOperation.REPLACE)
blocks.fill(GLASS_PANE, world(-29, -60, -24), world(4, -57, -24), FillOperation.REPLACE)
 

Dach des weges

blocks.fill(GLASS, world(9, -57, -15), world(5, -57, -52), FillOperation.REPLACE)
blocks.fill(GLASS, world(4, -57, -52), world(-34, -57, -48), FillOperation.REPLACE)
blocks.fill(GLASS, world(-34, -57, -47), world(-30, -57, -20), FillOperation.REPLACE)
blocks.fill(GLASS, world(-29, -57, -20), world(4, -57, -24), FillOperation.REPLACE)
 

Boden des Weges

blocks.fill(PRISMARINE, world(9, -61, -15), world(5, -61, -52), FillOperation.REPLACE)
blocks.fill(PRISMARINE, world(4, -61, -52), world(-34, -61, -48), FillOperation.REPLACE)
blocks.fill(PRISMARINE, world(-34, -61, -47), world(-30, -61, -20), FillOperation.REPLACE)
blocks.fill(PRISMARINE, world(-29, -61, -20), world(4, -61, -24), FillOperation.REPLACE)
 
blocks.fill(AIR, world(5, -60, -23), world(5, -58, -21), FillOperation.REPLACE)
 
blocks.fill(WATER, world(-39, -52, -15), world(14, -52, -57), FillOperation.REPLACE)
 
blocks.print("AQUARIUM", PRISMARINE, world(-33, -55, -13), EAST)
 

Picknickbbereich

tisch(20,-60,-57)
tisch(20,-60,-52)
tisch(20,-60,-47)
tisch(20,-60,-42)
tisch(20,-60,-37)
tisch(20,-60,-32)
tisch(20,-60,-27)
tisch(20,-60,-22)
tisch(20,-60,-17)
 
tisch(30,-60,-57)
tisch(30,-60,-52)
tisch(30,-60,-47)
tisch(30,-60,-42)
tisch(30,-60,-37)
tisch(30,-60,-32)
tisch(30,-60,-27)
tisch(30,-60,-22)
tisch(30,-60,-17)
 
 

Tiere

spawn(SPAWN_PARROT,80,8,-60,10)
spawn(SPAWN_PANDA, 15, 65, -60, -42)
spawn(SPAWN_FOX , 15, 46, -60 ,1)
spawn(SPAWN_CAMEL, 15, 40, -60, 20)
spawn(SPAWN_RABBIT, 20, 37, -60, 33)
spawn(SPAWN_CHICKEN, 20, -10, -60, 30 )
spawn(SPAWN_HORSE, 5, -20, -60, 28)
spawn(SPAWN_LLAMA, 5, -22, -60, 13)
spawn(SPAWN_COW, 5, -23, -60, -1)
spawn(SPAWN_PIG, 10, -11, -60, -8)
spawn(SPAWN_TROPICAL_FISH, 30, -5, -52, -28)
spawn(SPAWN_SALMON, 80, -5, -50, -28)
spawn(SPAWN_DOLPHIN, 80, -5, -52, -28)
spawn(SPAWN_SEA_TURTLE, 80, -5, -52, -28)
spawn(SPAWN_SQUID, 80, -5, -52, -28)
spawn(SPAWN_GLOW_SQUID, 80, -5, -52, -28)
 

Bäume

blocks.place(BAMBOO,world(53,-60,-18))
blocks.place(BAMBOO,world(40,-60,-50))
blocks.place(BAMBOO,world(20,-60,70))
blocks.place(BAMBOO,world(63,-60,-53))
blocks.place(BAMBOO,world(60,-60,-30))
blocks.place(BAMBOO,world(70,-60,-10))
blocks.place(BAMBOO,world(59,-60,-60))
blocks.place(OAK_SAPLING,world(67,-60,-90))
 
blocks.place(OAK_SAPLING,world(-22,-60,27))
blocks.place(OAK_SAPLING,world(-21,-60,11))
blocks.place(OAK_SAPLING,world(-21,-60,30))
blocks.place(OAK_SAPLING,world(-21,-60,-4))
 
blocks.place(CHERRY_SAPLING,world(42,-60,7))
 
blocks.place(CHERRY_SAPLING,world(18,-60,9))
blocks.place(CHERRY_SAPLING,world(10,-60,9))
 

Dies ist unser zweiter Teil unseres Projektes. Das ist der Interaktive Teil, welche unseren Eingangsbereich, sowie das Aushändigen des Nachtsichttranks für das Aquarium betrifft.

# Die folgende Funktion testet, ob ein Gold Klumpen in der Truhe ist.
 
# Sie gibt true oder false als Rückgabewert, sodass man sie weiterverwenden kann.
 
def isGoldinChest(x, y, z, a, b, c):
    blocks.fill(CHEST, world(x, y, z),world(x, y, z),FillOperation.REPLACE)
    goldFound = False
 
    # Agent weit weg teleportieren und alles wegschmeissen
 
    agent.teleport(world(50,-60,50),NORTH)
    agent.drop_all(FORWARD)
 
     # Kiste kopieren (sie steht bei (x,y,z))
 
    blocks.clone(world(x, y, z), world(x,y,z), world(a,b,c), CloneMask.REPLACE, CloneMode.NORMAL)
 
    # Agenten zur Kiste teleportieren
    agent.teleport(world(a, b, c+1), NORTH)
 
    # Kiste zerstören und Objekte aufsammeln
 
    agent.destroy(FORWARD)
    agent.collect_all()
    for slotNumber in range(1,10):
        itemID = agent.get_item_detail(slotNumber)
        if (itemID == 371):
            goldFound = True
    return goldFound
 
 
# Es wird geschaut ob ein Goldklumpen in der kiste ist das ergibt dann ein true oder false Rückgabewert und das kann weiter gebraucht werden.
def Payforpotion(x, y, z, a, b, c):
 
     blocks.fill(CHEST, world(x, y, z),world(x, y, z),FillOperation.REPLACE)
     goldFound = False
     # Agent weit weg teleportieren und alles wegschmeissen
 
     agent.teleport(world(50,-60,50),NORTH)
     agent.drop_all(FORWARD)
 
      # Kiste kopieren (sie steht bei (x,y,z))
 
     blocks.clone(world(x, y, z), world(x,y,z), world(a,b,c), CloneMask.REPLACE, CloneMode.NORMAL)
 
     # Agenten zur Kiste teleportieren
     agent.teleport(world(a, b, c+1), NORTH)
 
     # Kiste zerstören und Objekte aufsammeln
     agent.destroy(FORWARD)
     agent.collect_all()
     blocks.fill(CHEST, world(x, y, z),world(x, y, z),FillOperation.REPLACE)
     for slotNumber in range(1,10):
         itemID = agent.get_item_detail(slotNumber)
         if (itemID == 371):
             goldFound = True
     return goldFound
 
# Definition dafür das alle slots in einer Kiste mit luft ersetzt werden können.
 
def replaceSlotsinChestAir(x, y, z):
    for k in range(27):
        player.execute("/replaceitem block " + x + " " + y + " " + z + " slot.container " + k + " air 1")
 
# Definition dafür der erste slot in der Kiste mit einem Nachtsicht Trank ersetzt wird
def giveNightVisionPotion(x, y, z):
    for k in range(1):
        player.execute("/replaceitem block " + x + " " + y + " " + z + " slot.container " + k + " potion 1 5")
 
 
 
 
# Nun können wir ein Mal pro Sekunde testen, ob ein Goldklumpen in der Truhe ist
 
def on_forever():
    if (isGoldinChest(8, -60, 38, 70, -60, 70)==True):
        player.say("Danke für die Bezahlung du kannst rein")
        replaceSlotsinChestAir(8, -60, 38)
        for i in range(4):
            for j in range(3):
                blocks.fill(AIR, world(4+i, -60+j,37), world(4+i, -60+j,37), FillOperation.REPLACE)
    else:
        for i in range(4):
            for j in range(3):
                blocks.fill(BLOCK_OF_STRIPPED_BAMBOO, world(4+i, -60+j,37), world(4+i, -60+j,37), FillOperation.REPLACE)
    loops.pause(1000)
 
def on_forever2():
    if (isGoldinChest(18, -60, 38, 75, -60, 70)==True):
        player.say("Danke für die Bezahlung du kannst rein")
        replaceSlotsinChestAir(18, -60, 38)
        for i in range(6):
            for j in range(3):
                blocks.fill(AIR, world(19+i, -60+j,37), world(19+i, -60+j,37), FillOperation.REPLACE)
    else:
        for i in range(6):
            for j in range(3):
                blocks.fill(BLOCK_OF_STRIPPED_BAMBOO, world(19+i, -60+j,37), world(19+i, -60+j,37), FillOperation.REPLACE)
    loops.pause(1000)
 
def on_forever3():
    if (Payforpotion(9, -60, -13, 80, -60, 70)==True):
        player.say("Danke für die Bezahlung der Nachtsichttrank ist in der Kiste")
        giveNightVisionPotion(9, -60, -13)
    else:
        replaceSlotsinChestAir(9, -60, -13)
    loops.pause(1000)
 
def on_forever4():
    on_forever()
    on_forever2()
    on_forever3()
 
loops.forever(on_forever4)