Die Schnittstelle zum Server

Der Spielleiter kommuniziert mit den Computerspielern über eine Netzwerkverbindung. Dadurch ist man aus technischer Sicht komplett flexibel, was die Wahl der Programmiersprache angeht. Die Computerspieler müssen lediglich das Kommunikationsprotokoll erfüllen, das im Dokumentationsbereich der Software Challenge Website (http://www.software-challenge.de) eingesehen werden kann.

Anfängern wird allerdings davon abgeraten, einen komplett eigenen Client zu schreiben. Es ist deutlich einfacher, auf dem bereitgestellten Simpleclient aufzubauen (Den SimpleClient um eine eigene Strategie erweitern). Damit muss man sich nicht um die Kommunikation kümmern, sondern kann sich direkt auf die Spiellogik konzentrieren. Außerdem wird vom Institut für Informatik die beste Unterstützung für Java geboten.

Einführung in XML

Die Kommunikation zwischen Spielleiter und Computerspieler wird mittels XML-Nachrichten realisiert. XML ist eine Auszeichnungssprache, d.h eine Sprache, die nicht nur die Daten selbst, sondern auch Informationen über die Interpretation oder Bearbeitung liefert. Der Vorteil dieser Sprache liegt darin, dass sie sowohl vom Computer, als auch vom Menschen gut gelesen werden kann. Dieser Artikel soll den Aufbau einer XML-Datei beschreiben.

Tags

Die Grundelemente von XML sind Tags. Ein Tag liefert Informationen über die Art der Daten, die verarbeitet werden sollen. In XML wird ein Tag gebildet, indem man den Tagnamen zwischen spitze Klammern setzt. Dabei kennt XML drei verschiedene Tag-Arten:

  • Öffnendes Tag: <Tag>

  • Schließendes Tag: </Tag>

Der Schrägstrich bedeuted, dass das Tag geschlossen wird.

  • das Empty-Tag: <Tag />

Durch den Schrägstrich am Ende wird das Tag sofort wieder geschlossen.

Zwischen den öffnenden und schliessenden Tag steht die Information, die mitgeteilt werden soll.

Hinweis: XML unterscheidet strikt zwischen Groß- und Kleinschreibung.

Bildungsregeln

Die Tags dürfen nicht beliebig in Dokumenten verwendet werden. Es gelten hier die folgenden Regeln:

  • Zu jedem öffnenden Tag muss ein schließendes Tag existieren

  • Man kann Tags ineinander schachteln. Die einzelnen Tags dürfen sich jedoch nicht überkreuzen

  • Es darf nur ein Root-Tag geben, d.h. es gibt auf oberster Ebene genau ein Tag, in dem alle anderen enthalten sind.

Beispiel für korrekte XML-Syntax
<addiere>
    <komplexe_zahl>
        <realteil>3.5</realteil>
        <imaginaerteil>4.2</imaginaerteil>
    </komplexe_zahl>
    <komplexe_zahl>
        <realteil>1</realteil>
        <imaginaerteil>6.9</imaginaerteil>
    </komplexe_zahl>
</addiere>
Beispiele für fehlerhafte XML-Syntax
  • Fehlerhaft, da es mehrere Elemente auf oberster Ebene gibt:

<ueberschrift>
    Beispieldokument
</ueberschrift>
<text>
    Dies ist ein <unterstrichen>Beispieltext</unterstrichen>
    <absatz />
    Noch mehr Text
</text>
  • Fehlerhaft, da Tags sich kreuzen:

<dokument>
    <ueberschrift>
        Beispieldokument
    </ueberschrift>
    <text>
        <kursiv>Dies <unterstrichen>ist </kursiv>ein Beispieltext</unterstrichen>
        <absatz />
        Noch mehr Text
    </text>
</dokument>

Attribute

Man kann im Tag auch Attribute einfügen, in denen Informationen übertragen werden:

<Tag attribut="wert">

Auf diese Weise lässt sich das Beispiel mit den komplexen Zahlen etwas übersichtlicher gestalten:

<addiere>
    <komplexe_zahl realteil="3.5" imaginaerteil="4.2" />
    <komplexe_zahl realteil="1" imaginaerteil="6.9" />
</addiere>

Der Header

Ganz wichtig ist noch die erste Zeile in einem XML-Dokument. Aus ihr kann das Computerprogramm erfahren, wie er mit den Daten umzugehen hat (z.B. welcher Zeichensatz benutzt wird). Dieser Header sieht einem Tag sehr ähnlich:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>

Man nennt so ein Tag, auch Verarbeitungsinformation.

Theoretisch darf es in einem XML-Dokument mehrere Verarbeitungsinformationen geben, für die Software-Challenge muss man aber nur den Header kennen.

Kommentare

Man kann in sein XML-Dokument auch Kommentare einfügen, die beim Einlesen dann ignoriert werden:

<!-- Ich bin ein XML-Kommentar -->

Es darf beliebig viele solcher Kommentare geben und sie dürfen nur zwischen Tags stehen.

Weiterführende Informationen