5-App und Server

App

Für die App habe ich mich entschieden das Entwicklungskit „Flutter“ von Google zu benutzen, mit dem man UI´s für mehr oder weniger alle Plattformen mit dem selben Code mit der Programmiersprache „Dart“ programmieren kann. Ein großer Vorteil hierbei ist für mich, dass ich die App auf meinem Handy oder über einen PC laufen lassen kann, ohne neuen Code zu schreiben.

 

So sieht meine App aus. Die App ist recht einfach gehalten, da sie für meine Zwecke auch nicht viele Funktionen braucht. Man kann lediglich, wenn die Zeichen Grün sind (wie auf dem Bild) eins der Apple Command Zeichen anklicken, um seinen Zug zu machen. Dabei ist man immer das x.  Sobald man seinen Zug gemacht hat, färben sich die Zeichen alle rot, dabei fängt der Roboter an zu malen und zu rechen. Sobald dieser dann auch seinen Zug gemacht hat, färben sich die Kästchen wieder Grün und man ist selbst wieder dran. Mit dem Knopf „New Game“ kann man ein neues Spiel erstellen. Das Spielfeld wird dann zurückgesetzt und man sollte ein neues Papier einlegen.

Server

Kommen wir nun zum Server. Der Server ist auch genauso wie der Roboter mit Python geschrieben. Hierzu habe ich einen kleinen Webserver mit einer Python Bibliothek namens Flask geschrieben. Meinen Server habe ich so aufgebaut, dass ich für verschiedene Befehle jeweils eigene Seiten habe um Sachen abzufragen oder zu posten.

Hier ist einmal ein Beispiel. Hiermit kann ich in der App oder auch im Roboter das Spielfeld abfragen. Dabei rufe ich die Website auf, und dann gibt diese mir als Website einfach nur den Text von der Liste mit dem Spielfeld zurück. Um das etwas abzusichern, damit nicht jeder einfach auf die Befehle zugreifen kann habe ich diese mit einem „Header“ gesichert, der nicht so einfach zu finden ist. Das bedeutet man braucht diese immer, wenn man einen Befehlt aufruft.  In meinem Fall, den  „Authorization-Header“. Wenn man diesen nicht hat, bekommt man eine Fehlermeldung zurück, da bei diesem Beispiel nichts zurückgegeben wird. Sondern nur,  wenn der Header richtig ist. Auf diese Weise kann man z.B. nicht in ein laufendes Spiel eingreifen.

Mit diesen beiden wichtigen Teilen kann man nun auch Eingaben machen und selbst spielen. Dabei funktioniert nun auch das Zusammenspiel und das Networking zwischen den verschiedenen Teilen für den Roboter.