Digital Dojo Menü // * //Coden lernen o //Programmier-Roadmap o //Programmierschule o //Übungsräume o //Katas o //Tutorials * //Dojo Game o //Besiege unseren Bot o //Spieleinstieg o //Levels & Bots o //Leaderboard o //Multiplayer Modus o //Tipps * //Programmier-Challenge * //Bewerben * //Feedback * // <#> Ausloggen / / / / //Teilen //Facebook //Instagram //LinkedIn //E-Mail Spieleinstieg Dojo Game //Dojo Game | Dein Einstieg ins Spiel ------------------------------------------------------------------------ In diesem Abschnitt findest du alle notwendigen Infos, um das Dojo Game zu starten und erste Aktionen durchzuführen. *Hinweis: *Hol dir deinen persönlichen Zugang bevor du startest bzw. logge dich ein . So erscheinst du später auch am Leaderboard! Inhaltsverzeichnis 1. Das Spiel <#spiel> 2. Vorbereitung <#vorbereitung> 3. API-Schlüssel <#api> 4. Spiel starten & beenden <#starten> 5. Ritter steuern <#ritter> //Das Spiel Im Dojo Game geht es, einfach erklärt, um einen *Server*, auf welchem ein Spiel für dich bereitgestellt wird. In diesem Spiel gibt es im Singleplayer-Modus *einen Gegner, den sogenannten Dojo-Bot,* und deinen Charakter. *Dein Ritter* hat dieselben Eigenschaften wie ein vom Computer gesteuerter Ritter. Über bestimmte Befehle (diese werden über URLs aufgerufen) kannst du deinen Spieler steuern und so programmieren, dass dieser mit deinen Gegnern kämpft, vor ihnen wegläuft oder andere strategische Aktionen ausführt. Ziel ist es, so viele Gegner wie möglich zu eliminieren. *Ein Spiel dauert maximal 15 Minuten* - danach wird deine Sitzung geschlossen. Es gibt innerhalb dieser 15 Minuten unendlich viele Gegner. Wird ein Bot getötet, wird dieser auf einer zufälligen anderen Stelle der Map wiedergeboren. Bei Start eines neuen Spiels beginnst du immer automatisch neu in Level 1. //Vorbereitung Um am Dojo Game teilzunehmen, benötigst du einen an das Internet angeschlossenen Computer, einen *Digital Dojo Zugang* . Sobald du eingeloggt bist, findest du im Folgenden deinen *API-Schlüssel*, den du schon bald brauchen wirst. Die Logik deines Spielers kannst du in jeder beliebigen Programmiersprache implementieren, da Web-Requests an eine API von fast jeder verfügbaren Programmier- und Skriptsprache unterstützt werden. Falls du Starthilfe benötigst und auf bereits erstellte Algorithmen aufbauen möchtest, kannst du dich hier umsehen. Die REST-API Befehle können auch mithilfe vom Fiddler oder dem Postman gesendet werden. Diese Programme werden meistens zum Testen oder für Prototypen verwendet und benötigen keinen Programm-Code zum Funktionieren. //API-Schlüssel Mithilfe deines Keys kannst du dich mit unseren Servern verbinden um dein Spiel zu starten. Zudem werden damit deine gesendeten Befehle identifiziert, damit Aktionen, welche du ausführst, auch wirklich nur für dich gelten. Somit wird verhindert, dass du die Spiele anderer User stören oder manipulieren kannst. *Halte deinen Schlüssel geheim* - er könnte es anderen Nutzern ermöglichen, Befehle auszuführen welche nicht in deinem Sinne sind! //Los geht's ------------------------------------------------------------------------ In diesem Abschnitt erfährst du, wie du ein Spiel startest und beendest, den Status des laufenden Spiels abfragen kannst, und wie sich dein Ritter steuern lässt. Wie starte ich ein Spiel? [POST] Um ein Spiel zu starten, benötigst du deinen API-Schlüssel <#api>. Wurde dieser Befehl erfolgreich ausgeführt, wird das Spiel automatisch gestartet und du kannst direkt Aktionen zum Bewegen des Ritters ausführen. Falls bereits ein Spiel mit deinem Charakter läuft, musst du dieses zuerst beenden, bevor du ein neues erstellen kannst. Spiele werden mithilfe eines POST-Requests erzeugt. https://game-dd.countit.at/api/game/{key}/create text/x-csharp xxxxxxxxxx https://game-dd.countit.at/api/game/{key}/create ➯ Problem? ➯ Postman-Request Wie beende ich ein Spiel? [POST] Ein Spiel wird beendet, wenn du mit deinem API-Key folgenden Befehl als POST-Request ausführst: https://game-dd.countit.at/api/game/{key}/close text/x-csharp xxxxxxxxxx https://game-dd.countit.at/api/game/{key}/close ➯ Problem? ➯ Postman-Request Status des laufenden Spiels abfragen [GET] Um abfragen zu können, ob mit deinem API-Schlüssel bereits ein Spiel läuft, kannst du den folgenden Befehl verwenden. Du erhältst als Rückgabewert dasselbe wie beim Erstellen und Schließen eines Spiels sowie eine Fehlermeldung, falls kein Spiel vorhanden ist. https://game-dd.countit.at/api/game/{key}/status text/x-csharp xxxxxxxxxx https://game-dd.countit.at/api/game/{key}/status ➯ Problem? ➯ Postman-Request Beim Erstellen und Beenden eines Spiels werden jeweils dieselben Daten zurückgeliefert: → Game-ID: Diese macht dein Spiel identifizierbar. → Running: Damit werden dein Spielstatus und der Name des geladenen Levels sichtbar. Der zurückgegebene String ist im JSON Format. {"gameid":"d2144a67-733a-4e06-8a6b-9ce877b99753","running":true,"level":"The Default Level"} text/x-csharp xxxxxxxxxx {"gameid":"d2144a67-733a-4e06-8a6b-9ce877b99753","running":true,"level":"The Default Level"} ➯ Was ist JSON? //Steuere deinen Ritter ------------------------------------------------------------------------ Ein Ritter hat die Möglichkeit auf einem zweidimensionalen Spielfeld verschiedenste Aktionen auszuführen. Aktionen sowie ihre Wirkungen und REST Aufrufe sind hier gelistet. Versuche deine Aktionen nicht zu schnell hintereinander auszuführen, da du nach jeder Aktion eine gewisse Zeit abwarten musst, bis du diese wieder einsetzen kannst. Dein Ritter führt nur Befehle aus, welche du ihm gibst. Sendest du deinem Spieler keine Aktionen, welche dieser ausführen soll, steht dieser durchgehend auf derselben Position und ist verletzbar. Move [POST] Du kannst deinen Ritter alle 250 Millisekunden um ein Feld in eine der vier Himmelsrichtungen bewegen. Das Feld "Direction" sollte eine Zahl zwischen 0 und 3 enthalten: → 0 für Norden → 1 für Osten → 2 für Süden → 3 für Westen https://game-dd.countit.at/api/player/{key}/move/{direction} text/x-csharp xxxxxxxxxx https://game-dd.countit.at/api/player/{key}/move/{direction} ➯ Problem? ➯ Postman-Request Dash [POST] Dash lässt dich 5 Blöcke in eine von dir bestimmte Richtung bewegen. Es hat außerdem einen besonderen Cooldown: Du kannst Dash schon 3 Sekunden nach der Aktivierung verwenden, aber dein Spieler wird zu erschöpft sein und sich nur 3 Blöcke bewegen. Doch aufgepasst, wenn du gegen eine Wand dasht nimmst du Schaden in Höhe der verbleibenden Dash- Distanz. Nachdem du diese Aktion verwendet hast, musst du 5000 Millisekunden warten. https://game-dd.countit.at/api/player/{key}/dash/{direction} text/x-csharp xxxxxxxxxx https://game-dd.countit.at/api/player/{key}/dash/{direction} ➯ Problem? ➯ Postman-Request Hit [POST] Diese Aktion wird benutzt, um mit deinem Ritter zu schlagen. Es kann jeweils nur in eine Himmelsrichtung (0 für Norden, 1 für Osten, 2 für Süden und 3 für Westen) geschlagen werden und dies nur einen Block weit. Danach musst du 250 Millisekunden warten, bis du wieder angreifen kannst. Ein normaler Schlag, welcher mit einem Abstand von einem Block erzielt wurde, fügt dem Gegner weniger Schaden zu als wenn du auf demselben Block wie ein Gegner stehst. Hierbei ist es egal, wie viele Gegner auf einem Fleck stehen. Jeder bekommt gleich viel Schaden. https://game-dd.countit.at/api/player/{key}/hit/{direction} text/x-csharp xxxxxxxxxx https://game-dd.countit.at/api/player/{key}/hit/{direction} ➯ Problem? ➯ Postman-Request Shoot [POST] Shoot benötigt, wie Peek, eine Direction (0 für Norden, 1 für Osten, 2 für Süden und 3 für Westen), also eine Richtung. Shoot verwendet diese Richtung, um einen Schuss in diese Richtung abzugeben. Als Antwort kommt zurück, ob diese Aktion ausgeführt wurde und ob ein Gegner getroffen wurde. Die Kugel stoppt beim ersten Spieler. Nachdem du diese Aktion verwendet hast, musst du 1000 Millisekunden warten. https://game-dd.countit.at/api/player/{key}/shoot/{direction} text/x-csharp xxxxxxxxxx https://game-dd.countit.at/api/player/{key}/shoot/{direction} ➯ Problem? ➯ Postman-Request Radar [GET] Mit dem Befehl "Radar" kannst du die Umgebung um deinen Spieler im Umkreis von 5 Blöcken auf Feinde überprüfen. Das Feld wird aufgeteilt und durchsucht. Danach erhältst du Informationen über die Anzahl der Spieler in den 4 Himmelsrichtungen und den Block, auf dem du stehst. Nachdem du diese Aktion verwendet hast, musst du 250 Millisekunden warten. Radar https://game-dd.countit.at/api/player/{key}/radar text/x-csharp xxxxxxxxxx https://game-dd.countit.at/api/player/{key}/radar ➯ Problem? ➯ Postman-Request Scan [GET] Mit Scan kannst du den am nächsten stehenden Spieler im Umkreis von 3 Blöcken finden. Durch den Rückgabewert weißt du dann auch, was seine relative Position zu dir ist. Nachdem du diese Aktion verwendet hast, musst du 2000 Millisekunden warten. https://game-dd.countit.at/api/player/{key}/scan text/x-csharp xxxxxxxxxx https://game-dd.countit.at/api/player/{key}/scan ➯ Problem? ➯ Postman-Request? Peek [GET] Peek benötigt, wie Move und Hit, eine Direction (0 für Norden, 1 für Osten, 2 für Süden und 3 für Westen). Peek verwendet diese Richtung, um zu überprüfen, ob sich in der angegebenen Richtung ein Spieler in deinem Sichtfeld befindet. Peek gibt dir dann die Anzahl der Gegner in der Sichtlinie und die Distanz zum nächsten stehenden Spieler in dieser Sichtlinie zurück. Dies kannst du alle 1000 Millisekunden verwenden. https://game-dd.countit.at/api/player/{key}/peek/{direction} text/x-csharp xxxxxxxxxx https://game-dd.countit.at/api/player/{key}/peek/{direction} ➯ Problem? ➯ Postman-Request Stats [GET] Mit Stats hast du die Möglichkeit dir deine Kills und Deaths des aktiven Spiels anzusehen. Der Rückgabewert weicht vom Rückgabewert der anderen Funktionen ab - enthalten sind Informationen zum derzeitigen Level, allgemeine Stats sowie Informationen zu den Lebenspunkten eines Spielers. *progress* - gibt an, wie weit du ein Level bereits abgeschlossen hast (%) *remainingtime* - gibt an, wieviele Minuten noch übrig sind bevor das Spiel gestoppt wird *deathsleft* - gibt an, wie oft du noch sterben darfst, bevor das Spiel gestoppt wird https://game-dd.countit.at/api/player/{key}/stats text/x-csharp xxxxxxxxxx https://game-dd.countit.at/api/player/{key}/stats Der Rückgabewert dieser Funktion wurde mit dem letzten Update verändert. Hier ein Beispiel für den neuen Rückgabewert: {"action":"stats","executed":true,"stats": {"kills":1,"deaths":1},"level": {"progress":6.6,"remainingtime":14.44,"deathsleft":999,"levelid":2,"name":"Bigger Map Level"},"health":{"currenthealth":10.0,"maxhealth":10.0}} text/x-csharp xxxxxxxxxx {"action":"stats","executed":true,"stats":{"kills":1,"deaths":1},"level":{"progress":6.6,"remainingtime":14.44,"deathsleft":999,"levelid":2,"name":"Bigger Map Level"},"health":{"currenthealth":10.0,"maxhealth":10.0}} ➯ Problem? ➯ Postman-Request Specialattack [POST] Specialattack ist eine Aktion, welche du viel seltener als einen normalen Schlag ("Hit") einsetzen kannst. Diese hat allerdings eine bestimmte Fähigkeit und verursacht dadurch mehr Schaden an deinem Gegner. Specialattack nimmt keine Direction als Parameter entgegen, sondern führt den Angriff in allen Richtungen mit einem Wirkungskreis von 3 Blöcken gleichzeitig aus. Du kannst die Specialattack alle 5000 Millisekunden ausführen. https://game-dd.countit.at/api/player/{key}/specialattack text/x-csharp xxxxxxxxxx https://game-dd.countit.at/api/player/{key}/specialattack ➯ Problem? ➯ Postman-Request Teleport [GET] Mit Teleport kannst du dich auf ein beliebiges Feld teleportieren. Der Trick dabei: Du musst das Feld relativ zu deiner Position mithilfe von x und y Koordinaten angeben. Cooldown: 20000 Millisekunden (20 Sekunden) Achtung: Falls du in einer Wand landest bist du sofort tot. Wenn du allerdings einen Gegner erwischst, wird dieser sofort getötet. https://game-dd.countit.at/api/player/{key}/teleport/{x}/{y} text/x-csharp xxxxxxxxxx https://game-dd.countit.at/api/player/{key}/teleport/{x}/{y} ➯ Problem? ➯ Postman-Request Rückgabewert Jede Aktion gibt im Prinzip immer einen gleich strukturierten JSON- String zurück. Jedoch können sich die Datentypen der einzelnen Felder je nach Aktion unterscheiden. Hier zwei Beispiele, um dies zu verdeutlichen: Die Move-Aktion, ohne speziellen Rückgabewert: {"action":"move","move":"true","executed":"true"} text/x-csharp xxxxxxxxxx {"action":"move","move":"true","executed":"true"} Die Radar-Aktion, mit einem Integer als Rückgabewert: {"action":"radar","radar":2,"executed":"true"} text/x-csharp xxxxxxxxxx {"action":"radar","radar":2,"executed":"true"} ➯ Was ist JSON? ➯ Postman-Request Bereit für die ultimative Programmier-Challenge an deiner Schule? Alle Infos dazu findest du hier // / / Ultimative Coding-Roadmap Unsere Roadmap weist dir den Weg zum Coding-Profi! Mehr erfahren // / / Besiege unseren Bot Egal ob als Einzelspieler oder im Mulitplayer-Modus: Stelle dich dem Dojo-Bot und beweise, dass du auf das Leaderboard gehörst! Ich bin bereit! // / / Bewerbung bei COUNT IT Starte deine Karriere als Softwareentwickler*in bei COUNT IT. Zum Formular! // Über Digital Dojo Das Digital Dojo ist der virtuelle Übungsraum von COUNT IT. Angehende Programmierer*innen, Code-Neulinge, Wiedereinsteiger*innen und Fortgeschrittene finden hier das nötige Rüstzeug für ihre Karriere. Du möchtest deine Lehre bei COUNT IT starten? Dann bist du hier richtig - besiege deine Gegner im Dojo Game und sichere dir deine Lehrstelle! Inspire your career. Navigation Programmieren lernen News Programmierschule Partner Programmier-Challenge Dojo Game Datenschutz Karriere @ COUNT IT Impressum COUNT IT Softwarehouse Newsletter abonnieren Der COUNT IT Newsletter liefert viermal jährlich interessante Neuigkeiten über das Unternehmen. Gleich anfordern! E-Mail-Adresse Senden // // // // COUNT IT Group verwendet Cookies, um die Website bestmöglich an die Bedürfnisse der User anpassen zu können. * Google * Microsoft * Ahrefs * Statistik Akzeptieren Individuelle EinstellungenIndividuelle Einstellungen ausblenden | Datenschutz­erklärung Google Google Analytics und Optimize aggregiert Daten über unsere Besucher und ihr Verhalten auf unserer Website. Wir nutzen diese Informationen zur Verbesserung unserer Seite. Microsoft Microsoft aggregiert Daten über unsere Besucher und ihr Verhalten auf unserer Website. Wir nutzen diese Informationen zur Verbesserung unserer Seite. Ahrefs Ahrefs aggregiert Daten über unsere Besucher und ihr Verhalten auf unserer Website. Wir nutzen diese Informationen zur Verbesserung unserer Seite. Statistik Es werden grundlegend notwendige, anonymisierte Userdaten aufgezeichnet, welche nur von uns für Auswertungen verwendet werden! Cookie Entscheidung speichern