Tipps und Tricks für das Dojo Game gesucht?
Du möchtest am Dojo Game teilnehmen, jedoch hast du noch technische Fragen?
Hier findest du Tipps und Tricks, die dir bestimmt weiterhelfen!
Wobei brauchst du Hilfe?
Eine Verbindung in JavaScript
Um mit JavaScript auf unseren Service zugreifen zu können gibt es mehrere Möglichkeiten. Die einfachste ist mithilfe von XMLHttpRequest. Eine weitere Möglichkeit wäre die Fetch Funktion.
In diesem konkreten Beispiel wird auf den XMLHttpRequest näher eingegangen und dieser als Client für Anfragen an einen Server verwendet. Hier siehst du, wie du ein Spiel über einen AJAX-Aufruf startet kannst. Dieser AJAX-Aufruf wird danach mit einem Callback bearbeitet und auf das Ergebnis des Requests reagiert.
Um den Spielstatus abzufragen ist ein GET Request notwendig:
Das Spiel wird geschlossen indem du den folgenden Code-Schnipsel ausführst:
Um mit deinem Ritter zu interagieren wird meist die POST Methode verwendet. In folgendem Code wird erklärt wie man mit der Hilfe von JavaScript seinen Ritter einen Block nach Osten laufen lassen kann.
Hier noch zur Verdeutlichung ein Code-Snippet, um dieses auszuführen musst du zuerst noch deinen API-Key eingeben. Das Skript versucht ein neues Spiel zu starten, ist dies nicht möglich, läuft bereits ein Spiel und eine Nachricht wird ausgegeben. Danach läuft dein Ritter einen Block nach Westen.
Eine Verbindung in Java
Java bietet wie JavaScript eine große Variation an Möglichkeiten, um einen GET oder POST Request an einen Server zu senden. Hier findest du die gängigsten Lösungen für diese Aufgabe.
Für dieses Java Beispiel wird die Library Json.org verwendet. Falls es Probleme bei der Installation/Einbindung dieser Library gibt, kannst du dir hier Hilfe holen.
Ein Spiel wird mit der Hilfe von einem POST - Request gestartet, Rückgabewerte kannst du hier finden.
Um deinen Ritter zu bewegen ist ein POST - Request notwendig, in diesem Fall läuft der Ritter einen Block nach rechts.
Unten findest du den gesamten Code, der notwendig ist, um einen Request zu senden. Dies dient nur als Beispiel. Es gibt möglicherweise bessere Wege um dies zu realisieren. Mit diesem Code-Snippet möchten wir dir eine Starthilfe geben.
Eine Verbindung in .NET
In C# gibt es eine bereits vorgefertigte Klasse mit der man ganz einfach Post und Get Requests an eine bestimmte URL oder Server senden kann, nämlich die WebClient Klasse. Hier findest du ein Beispiel für die richtige Verwendung und nützliche Informationen.
Alle genauen Rückgabewerte sind hier aufgelistet.
Das folgende Beispiel basiert auf der WebClient Klasse in Kombination mit einem Json Parser.
Mit diesen 2 einfachen Zeilen wird ein Spiel gestartet:
Um Resourcen zu sparen ist es sinnvoll nicht für jeden Aufruf eine neue Instanz von WebClient zu erzeugen, versuche wenn möglich, immer die selbe Instanz zu nutzen.
Wie erfahre ich, ob ein Spiel mit meinem API-Key gerade läuft?
Um ein Spiel zu schließen, sind genau wie beim Starten eines Spiels nur wenige Zeilen Code notwendig.
Möchtest du mit deinem Ritter Aktionen ausführen und auf diese reagieren?
Hier noch zur Verdeutlichung ein Code-Snippet. Um dieses auszuführen musst du zuerst noch deinen API-Key eingeben. Das Programm versucht ein neues Spiel zu starten. Ist dies nicht möglich, so läuft bereits ein Spiel und eine Nachricht wird ausgegeben. Danach läuft der Ritter einen Block nach Westen.
UploadString wird für POST Requests verwendet und DownloadString für GET Requests.
Genutzte Technologien
Hier werden einige der verwendeten Technologien aufgezählt und Fachbegriffe erklärt.
Was ist JSON?
JSON bietet einen einfachen Standard für die strukturierte Kodierung von Daten in Form von menschenlesbarem Text. Dies bietet Vorteile bei einer automatisierten Weiterverarbeitung, macht sie aber auch einer manuellen Inspektion und Überarbeitung besser zugänglich. Hier findest du weitere Informationen zum Thema JSON.
Was ist eine REST API?
REST steht für Representational State Transfer, API für Application Programming Interface. Gemeint ist damit ein Programmierschnittstelle, die sich an den Paradigmen und Verhalten des World Wide Web (WWW) orientiert und einen Ansatz für die Kommunikation zwischen Client und Server in Netzwerken beschreibt. Weitere Details gibt es hier.
Was ist ein Bot?
Bots sind ebenfalls Avatare wie dein Spieler, jedoch werden diese nicht von einem Menschen oder einem von Menschendhand erschaffenen Algorithmus gesteuert, sondern vom Computer.
Häufige Fehler
Hier sind mehrere Fehler mit ihren Lösungen aufgelistet, beim Implementieren von Spieler*innen auftreten können.
404 Page Not Found
Wenn du beim Aufrufen eines Befehls einen 404 Fehler erhältst, liegt das meistens an der Verwendung des falschen Request-Typs. Das bedeutet, es wird z.B. GET verwendet obwohl der Befehl vom Typ POST ist.
500 Bad Request
Der Statuscode 500 wird zurück geliefert, wenn wir intern auf ein Problem stoßen, welches von deinem Request ausging. Du erhältst diese Fehlermeldung, wenn du nicht berechtigt bist diesen bestimmten Request auszuführen oder dein API-Key nicht verfügbar ist.
Fehler beim Erstellen eines Spiels
Falls das Erstellen eines Spiels nicht möglich ist, liegt es entweder daran, dass die maximale Anzahl an Spielinstanzen erreicht ist oder ein falscher API-Key verwendet wird. Läuft bereits ein Spiel mit deinem Schlüssel, kannst du auch kein neues Spiel erstellen - du musst zuerst das alte Spiel schließen.
Aktion kann nicht ausgeführt werden
Es gibt mehrere Möglichkeiten, warum eine Aktion nicht ausgeführt werden kann. Die häufigste ist jedoch, dass du bestimmte Aktionen nur in gewissen Zeitabständen ausführen darfst. Ein weiterer Grund kann sein, dass beim Move der Spieler am Rand des Spielfelds steht und deswegen nicht weiter in diese Richtung laufen darf.
Bist du bereit?
Beweise dich im Dojo Game und setz dich an die Spitze des Leaderboards!
Dojo - virtueller Übungsraum
Löse die Dojo-Aufgaben und werde Programmier-Profi!
Gib uns Feedback!
Wir kümmern uns um deine Fragen, versuchen deine Wünsche zu erfüllen und freuen uns über Anregungen.
Ultimative Coding-Roadmap
Unsere Roadmap weist dir den Weg zum Coding-Profi!