Open Source Voxel-Engine, https://www.minetest.net
minetest-5.4.1-win64_ocg_version.zipW | |
ASD | |
Leertaste: | Springen |
Maus: | Blickrichtung |
Doppel Leertaste: | Fliegen (aber zuerst Privileg verleihen) |
Shift: | zu Boden sinken |
C: | third person view |
V: | Minimap |
J: | Fast Mode |
F5: | Debug Info und Koordinaten |
T: | Öffnet Chat Fenster |
Zum Beispiel 277 22 -276 | |
i: | Inventar |
Wie oben erwähnt öffnet "T" das Chat-Fenster.
Was ist das Chat-Fenster? Hier kann man normalerweise Nachrichten
an andere oder alle Spieler schicken. Wir befinden uns im Workshop
aber im Singleplayer-Modus, dadurch spielt die Chatfunktion für
Unterhaltungen keine Rolle.
Die Chatfunktion hat aber noch eine andere Funktion. Stellt man im
Chatfenster der Eingabe ein "/" (über der 7) voran dann erwartet das
System keine Nachricht sondern einen Befehl (ein Kommando) der
ausgeführt wird.
Zeile 1 erteilt dem Spieler mit angegebenem Namen das Flugprivileg
Zeile 2: Im Singleplayer-Modus hat der aktuell angemeldete Spieler den Namen "singleplayer". Durch den Aufruf werden dem angemeldeten Spieler alle Privilegien erteilt.
Zeile 3: Die Uhrzeit wird auf 6:00 Uhr morgens gestellt. Den Befehle kannst du verwenden, wenn es hell bleiben soll.
Zeile 4 teleportiert den Spieler an den Ort 0,0,0. Aber Achtung! Ermittle
vorher über F5 an welchen Koordinaten du dich befindest, damit du zurückkehren kannst.
Oben haben wir gesehen, dass mittels "/" spezielle Befehle an das
System geschickt werden können. Hier kommt eine für uns ganz
wichtige zusätzliche Möglichkeit dazu:
Man kann nämlich auch eigene Chat-Kommandos festlegen und dort einen
Befehl und zusätzlich ein eigenes Programm festlegen, welches ausgeführt wird wenn der zugehörige Befehl nach dem "/" eingegeben wird.
Hier erklären wir, was eine Funktion ist. Das sollte man verstehen, wenn man die Einbindung eines chat-Kommandos verstehen möchte. Das ist aber für den Workshop nicht unbedingt notwendig.
function ausgabe(a, b)
minetest.chat_send_all(a .. " " .. b)
end
function addiere(a, b)
return a + b
end
Aufruf:
...
ausgabe(5, 3)
minetest.chat_send_all(addiere(5, 3))
...
Ausgabe:
5 3 8 doneErklärung:
"ausgabe" und "addiere" sind die Namen der Funktionen über die sie aufgerufen werden. a und b nennt man die Parameter. Damit können der Funktion Werte übergeben werden. Damit sage ich der Funktion addiere was zusammengezählt werden soll. Funktionen können einen Rückgabewert haben (so wie addiere) müssen aber nicht (so wie ausgabe). Wichtig bei einer Funktion ist, dass sie nicht sofort ausgeführt wird, sondern erst wenn die Funktion, über ihren Namen, aufgerufen wird. Das ist eine wichtige Eigenschaft.
auto.preis | liefert 15.000 |
auto.ps | liefert 120 |
auto.start() | startet das Auto |
auto.stop() | schaltet das Auto aus |
minetest.register_chatcommand("hello1", {
func = function(playername, param)
return true, "hello world!"
end,
})
Schauen wir uns das Programm genauer an:
Die Methode "register_chatcommand" des Objekts minetest (hier können wir auf die momentane Welt zugreifen) wird aufgerufen.
Der erste Übergabewert ist der gewünschte Name des chat-Kommandos. In unserem
Fall ist das "hello1".
Zweiter übergebener Wert ist eine Liste und das erste (und einzige) Element
dieser Liste ist eine Funktionsdefinition. Diese Funktionsdefinition wird nicht
gleich aufgerufen sondern für die spätere Verwendung gespeichert.
Wird nun im System das chat-Kommando "hello1" abgesetzt und erkannt, erst dann wird die zuvor bei der Registrierung gespeicherte Funktion ausgeführt.
Probieren wir das aus und schauen wir was passiert!
siehe auch:Neue Mods müssen aktiviert werden:
In unserem Fall ist das aber nicht notwendig. Der Mod ist bereits aktiviert.
Wichtig!: Bei einer Änderung im Code des Mode muss man ins Hauptmenü gehen und die Welt neu starten um den Mod neu zu laden.
Du hast jetzt einiges über Minetest-Programmierung gelernt und
bist jetzt bereit vorbereitete Programme anzuschauen, auszuprobieren und zu bearbeiten oder sogar eigene Projekte durchzuführen.
Beim Studium der vorbereiteten Programme werden dir einige Meilensteine
des Programmierens begegnen, die wir dann anhand des Programms erklären:
Variable
if else ...
for-Schleife
Random-Methode
Table
...
Idee für eigene Projekte:
Chat-Kommando "set_blockbelow" mit Parameter um beliebige Blocktypen zu erzeugen (siehe dazu minetest-itemstrings-cheatsheet.pdf oben).
Chat-Kommando "set_blockbelow" verändern, sodaß der Block nur
ersetzt wird wenn ein bestimmter Blocktyp vorlag (mittels if-Bedingung).
Ist dieses Verhalten intelligent?
KI ist der Teil der Informatik, der sich mit dem Entwurf intelligenter Computersysteme befasst, die die Eigenschaften aufweisen, die wir mit Intelligenz im menschlichen Verhalten assoziieren - Sprachverständnis, Lernen, logisches Denken, Problemlösung und so weiter. (Barr und Feigenbaum, 1981: 3)
→ Systeme die Eigenschaften menschlicher Intelligenz aufweisen.
Wir definieren KI als das Studium von Agenten, die Vorgaben aus der Umwelt erhalten und Handlungen ausführen. [Im Idealfall führt ein intelligenter Agent die bestmögliche Handlung in einer Situation aus. (Russel und Norvig, 2010: viii, 30)
→ Systeme die sich intelligent verhalten.
In beiden Fällen wird nicht darüber gesprochen wie das intelligente Verhalten
erzielt wird. Anders als von vielen fälschlich vermutet verlangt der Begriff der
Künstlichen Intelligenz nicht den Einsatz von bestimmten Technologien und Verfahren.
siehe: https://hackernoon.com/are-you-using-the-term-ai-incorrectly-911ac23ab4f5