Dies ist eine alte Version des Dokuments!
Auftrag 03.09.2024
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()
time1 = gameplay.time_query(GAME_TIME)
while gameplay.time_query(GAME_TIME)-time1<2000:
#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)