HARALD MELCHER

Flattiverse - Raumschiffe Programmieren in C#

Verbindung zum Server

Änderungen im Programm-Gerüst

Program.cs

Die von Visual Studio erstellte Programm-Klasse erzeugt im Aufruf von Application.Run(new Form1()) die Form mit der Benutzeroberfläche. Hier kann man Oberfläche und “Mechanik” des Raumschiffs trennen.

Zunächst erhält die Form-Klasse einen anderen Namen als Form1 (bei mir Gui), damit sie ihrer Bedeutung als Graphical User Interface gerechter wird. Beim Umbenennen zickt Visual Studio möglicherweise, so dass das eine Aufgabe für den Datei-Explorer wird.

Die Instanziierung der Gui-Klasse erfolgt in einem getrennten Schritt vor dem ganzen Application-Code und Application.Run(gui), so dass dazwischen noch Erstellen und Starten des Raumschiffes passt.

Der Raumschiff-Rumpf (bei mir Body) erfährt nach Erstellung im Application-Teil das Gui durch ConnectGui(gui), damit er darauf zugreifen kann.

Beim Starten des Rumpfs verwenden wir das await-Schhlüsselwort, weil das die erste eigene asynchrone Methode wird. Das hat zur Folge, dass die Main-Methode nun auch den Wert async Task haben muss.

Der Raumschiff-Körper

Body.cs

Die Start-Methode ist vom Typ async Task und erstellt zuerst eine neue Instanz des Server-Objekts aus der Connector-DLL. Über sie läuft die Kommunikation mit dem Server.

await server.Login(username, password) loggt die Spielerin oder den Spieler ein.

Welche Universen der Server kennt, liefert seine Universes-Property. Sie kennt auch die Galaxien zu jedem Universum.

In ein Universum kommt man mit Join, das eine Teamfarbe des jeweiligen Universums als Parameter hat:

Universe universe 
    = server.Universes["Beginners Course"]; 

await universe
    .Join(universe.Teams["None"]);

Damit kann unser Programm jetzt

  • sich mit dem Flattiverse-Server verbinden
  • sich mit Userid und Passwort anmelden
  • sich die Liste der Universen holen
  • in jedem Universum die Galaxien sehen
  • die passenden Teamfarben pro Universum holen