ef:minecraftauftraege

Dies ist eine alte Version des Dokuments!


Auftrag 1
Studiere im Wiki das Kapitel 3.1 und 3.3.1 (call by value vs. call by reference) zu den Variablen
Folgende Fragen sollten beantwortet werden können:

  • Was ist der Unterschied zwischen statischer und dynamischer Typisierung?
  • Welche Vor- und Nachteile haben die statische und die dynamische Typisierung?
  • Welche Variablentypen gibt es und was zeichnet sie aus?
  • Wozu verwendet man Variablen in der Programmierung?
  • Was ist der Unterschied zwischen einem Referenztyp und einem Werttyp?
  • Was versteht man zwischen „Call by Reference“ bzw. „Call by Value“
  • Was bedeutet mutable bzw. imutable?
  • Sind in Python die Variablen Referenztypen oder Werttypen? Sind sie mutable oder imutable?

Auftrag 2

  • Schreibe ein Programm, welches eine Linie mit 5 Blöcken baut.
  • Schreibe eine Funktion linie(n), welche eine Linie mit n Blöcken baut.
  • Schreibe eine Funktion linieDuo(n), welche eine Linie baut mit Diamant,Gold,Diamant,Gold etc. (n Mal)
  • Schreibe eine Funktion linieListe(l), welcher man eine Liste übergeben kann mit Materialien, und dann wird eine Linie aus diesen Materialien gebaut.
  • Schreibe eine Funktion Parkett(m1, m2, n), der man zwei Materialien und eine Zahl übergeben kann. Danach wird ein Schachbrettmuster der Breite und Länge n gebaut aus den Materialien m1 und m2.

Auftrag 3
Schreibe ein Programm, welches deinen Agenten dazu bringt, Diamanten einzusammeln und Knochen nicht einzusammeln (bzw. wieder wegzuwerfen)
Erstelle dazu eine flache Welt und kopiere den untenstehenden Code in deinen Codebuilder.

  • Das Feld ist 30×30 gross (0,-60,0) bis (30,-60,30)
  • Ich werde zufällig Knochen und Diamanten platzieren
  • Dein Agent soll die Diamanten aufsammeln und die Knochen nicht
  • Mit dem Chatbefehl build_arena kannst du die Arena bauen
  • Mit dem Chatbefehl spread_items kannst du Knochen und Diamanten verteilen
  • Du sollts den Code start schreiben, dieser beginnt mit teleport_agent, welche den Agenten zufällig in die Arena teleportiert.

def build_arena():
    blocks.fill(SANDSTONE, world(0,-61,0),world(30,-61,30))
    blocks.fill(212, world(0,-60,30), world(30,-59,30))
    blocks.fill(212, world(30,-60,30), world(30,-59,0))
    blocks.fill(212, world(30,-60,0), world(0,-59,0))
    blocks.fill(212, world(0,-60,0), world(0,-59,30))
    blocks.fill(AIR, world(30,-58,0), world(0,-58,0))
    blocks.fill(211, world(0,-62,0),world(30,-62,30))
   

player.on_chat("build_arena", build_arena)


def spread_items():
    
    for i in range(10):
        agent.set_item(DIAMOND, 1, 1)
        a = randint(1, 29)
        b = randint(1,29)
        agent.teleport(world(a, -60, b), WEST)
        agent.drop(BACK, 1, 1)
    
    for i in range(10):
        agent.set_item(BONE,2,2)
        a = randint(1, 29)
        b = randint(1,29)
        agent.teleport(world(a, -60, b), WEST)
        agent.drop(BACK, 2, 1)
            

player.on_chat("spread_items", spread_items)

def teleport_agent():
    a = randint(1, 29)
    b = randint(1,29)
    agent.teleport(world(a, -60, b), WEST)

def start():
    teleport_agent()
    for i in range(20):
        #agent.turn_left()
        u = randint(1,3)
        agent.move(FORWARD, u)
        agent.collect_all()
        agent.move(FORWARD, 1)
        agent.collect_all()
        agent.turn_left()
        if u==2:
            agent.turn_left()

player.on_chat("start", start)

#agent.detect(AgentDetection.BLOCK, FORWARD)

#agent.inspect(AgentInspection.BLOCK, FORWARD)

#agent.get_item_detail(1)

  • ef/minecraftauftraege.1725974673.txt.gz
  • Zuletzt geändert: 2024/09/10 15:24
  • von lehmannr