====== 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 ''global'' in einer Funktion? - Unterschied zwischen ''call by value'' und ''call 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 - ''While'' und ''if''-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 ''self'' und 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: |< 800px 400px 400px>| ^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 |