Lernziele Minecraft und Python/OOP
Lernziele Python
Die Grundkonzepte von Python verstehen
- Variablen
- Sichtbarkeit (Scope)
- Lokale vs. globale Variablen
- Unterschied zwischen dynamischer und statischer Typisierung - was verwendet Python?
- Camelcase, Snakecase, Pascalcase
- Wozu dient das Schlüsselwort
globalin einer Funktion? - Unterschied zwischen
call by valueundcall by reference. - Mutable (veränderbar) und imutable (unveränderbare Variablen). Welche Typen sind in Python mutable?
- Python verwendet „call by object reference“, was bedeutet dies?
- Funktionen
- Konzept und Aufgabe der Funktionen verstehen
- Parameter/Argumente bei Funktionsaufrufen verstehen
- Funktionen mit Rückgabewert verstehen.
- Listen
- Verstehen, wie man Listen definiert und wie man auf die Elemente zugreift.
- Die einfachsten Listenbefehle verstehen (append, insert, remove)
- Listen erstellen mit dem
range-Befehl - Listen durchgehen mit dem
for xxx in range-Befehl
Whileundif-Befehl verstehen.
Lernziele Objektorientierte Programmierung
- Unterschied zwischen Klasse und Objekt/Instanz verstehen und das Konzept begreifen.
- Klassenvariablen vs. Instanzvariablen unterscheiden können und verstehen.
- Klassenmethoden vs. Instanzmethoden unterscheiden können und verstehen, wie diese in Python erstellt werden.
- Das Schlüsselwort
selfund seine Rolle in der OOP Programmierung in Python verstehen - Wissen, was die Aufgabe des Konstruktors ist, und wie dieser in Python aussieht.
- Public, Protected und Private-Variablen unterscheiden können.
- Datenkapselung/Getter- und Setter-Methoden: wozu dienen sie?
- Vererbung verstehen. Wann ist es sinnvoll, Vererbung einzusetzen?
- Verstehen, wozu die Methode
super()dient. - Was versteht man unter overloading (überladen) und overriding (überschreiben) ?
Was sollte man zu Minecraft wissen?
Die untenstehenden Befehle aus Minecraft sollte man verstehen, wenn man sie sieht:
| Befehl | Beispielbefehl/Erklärung |
|---|---|
| world(100,-60, 100) | Weltkoordinaten |
| pos(10, 3, 7) | Relative Koordinaten |
| agent.set_item | agent.set_item(DIAMOND_BLOCK,64,2) |
| agent.set_slot | agent.set_slot(1) |
| agent.place | agent.place(LEFT) |
| agent.move | agent.move(FORWARD,3) |
| agent.turn | agent.turn(LEFT) |
| agent.set_assist(PLACE_ON_MOVE, [TRUE/FALSE]) | Bauen, während Agent sich bewegt (Ja/Nein) |
| agent.teleport_to_player() | Agenten zum Spieler teleportieren |
| agent.set_assist(DESTROY_OBSTACLES, [TRUE/FALSE]) | Hindernisse zerstören |
| blocks.place | blocks.place(GOLD_BLOCK, world(101,-60, 20) |
| blocks.fill | blocks.fill(CONCRETE, world(1,-60,1), world(6, -50, 7),FillOperation.HOLLOW) |
| player.say | player.say(„Hallo“) |
| agent.inspect(AgentInspection.BLOCK, FORWARD) | Gibt die Block-ID |
| agent.detect(AgentDetection.BLOCK, FORWARD) | Gibt True/False |
| blocks.test_for_block(GRASS, world(0, -60, 0)) | Gibt True/False |