HasamiShogi

Beispiel: Implementierung des Spieles Hasami Shogi als Systemplugin

Die Spielregeln von Hasami Shogi

Auswahl der Basisklasse

Für die Realisierung des Hasami Shogi-Spieles gibt es zwei Möglichkeiten:

  • Verbindung mit einem Kurs / einer Einrichtung
  • Unabhängig von Kursen und Einrichtungen

Im Beispiel ist die Realisierung als systemweites Plugin, welches unabhängig von Kursen und Einrichtungen genutzt werden kann, durchgeführt worden. Die Plugin-Schnittstelle definiert hier den Typ des SystemPlugins.

Um ein solches Plugin zu implementieren, ist dieses von der Basisklasse? AbstractStudIPSystemPlugin abzuleiten. Das Plugin wird daraufhin von der Plugin-Engine in der Toolbar, dem Stud.IP-Hauptmenü angezeigt, sofern das Plugin hierfür eine entsprechende Navigation bereitstellt.

Im folgenden beginnen wir mit dem Anlegen einer entsprechenden Verzeichnisstruktur und dem Erstellen der Manifest-Datei.

Anlegen einer Plugin-Verzeichnisstruktur

Als erstes legen wir ein Verzeichnis an, in dem sich alle Dateien, die zum Plugin gehören, befinden werden. Dieses wird später gepackt und bildet dass Plugin-Paket, welches sich dann in das Stud.IP-System über die Pluginadministration einbauen lässt.

Folgende Verzeichnisstruktur sollte angelegt werden:

  • HasamiShogiPlugin
  • HasamiShogiPlugin/img

Im Hauptverzeichnis (HasamiShogiPlugin) werden die Plugin-Klasse sowie das Manifest und SQL-Dateien zum Erzeugen und Löschen der Datenbanktabellen abgelegt.

Im HasamiShogiPlugin/img-Verzeichnis werden alle Bilddateien abgelegt, die für das Plugin benötigt werden.

Erstellung des Plugin-Manifestes

Im ersten Schritt erzeugen wir ein Plugin-Manifest, welches grundlegende Daten enthält.

pluginclassname=HasamiShogiPlugin
pluginname=HasamiShogi
origin=CELab
version=0.1
dbscheme=hs.sql

Die Klasse, die unser neues Plugin bildet, soll HasamiShogiPlugin lauten. Den Namen legen wir mit HasamiShogi fest. Der Ersteller ist in diesem Falle CELab. Diesen Eintrag kann jeder Entwickler benutzten, um sich selbst als Ersteller zu nennen.

Die Versionsnummer sollte nach jeder Änderung erhöht werden, damit zum einen Administratoren entscheiden können, ob das Plugin, welches in ihrem System installiert ist, aktualisiert werden muss. Zum anderen können Plugins auf anderen Plugins basieren. Um hier die Funktionsfähigkeit zu gewährleisten, wird auf die Versionsnummer zurückgegriffen.

In der aktuellen Plugin-Schnittstelle existiert noch keine Möglichkeit, Abhängigkeiten bereits bei der Installation zu testen. Dies wird in der nächsten Version nachgerüstet.

Des weiteren wird im Manifest bereits auf eine SQL-Datei zur Erstellung der Datenbank-Tabellen verwiesen. Diese soll im folgenden besprochen werden.

Das Datenbank-Schema-Skript (hs.sql)

Für eine einfache Implementierung des Hasami Shogi-Spieles werden nur wenige Informationen benötigt, die in der Datenbank gehalten werden müssen.

Zu allererst muss eine konkrete Partie verwaltet werden können. (gameid, gamename,status). Partien können sich in verschiedenen Zuständen befinden (geöffnet, gestartet,beendet). Zu einer Partie gehören zwei Spieler (Schwarz und Weiss). Hierfür wird nur die Stud.IP-interne ID der Spieler abgelegt. Zudem wird gespeichert, wer eine Partie gewonnen hat und wer gerade am Zug ist.(winner, currentplayer). Im Feld winner wird ebenfalls die Stud.IP-interne ID des Spielers genutzt. Im Feld currentplayer wird die Farbe vermerkt. Als letztes muss noch das Spielbrett gespeichert werden.

create table hasami_shogi_plugin 
       (gameid int primary key auto_increment, 
       gamename varchar(50), whiteplayerid varchar(32), 
       blackplayerid varchar(32), 
       status enum('open','finished','started'),
       board text,winner varchar(32),currentplayer int);

Dieses Skript wird später bei der Installation des Plugin-Paketes automatisch ausgeführt und legt eine entsprechende Tabelle für unser Plugin an.

Die Plugin-Hauptklasse (HasamiShogiPlugin)

Nun ist es an der Zeit, unsere Plugin-Klasse anzulegen. Dazu leiten wir wie bereits oben vorgestellt von der Klasse AbstractStudIPSystemPlugin ab.

class HasamiShogiPlugin extends AbstractStudIPSystemPlugin {
}

Um das Hasami Shogi-Spiel umzusetzen wird es nach objektorientierter Analyse und Entwurf in mehrere Klassen aufgeteilt. So werden Regeln, Spielbrett und Spielzug in separaten Klassen im Ordner framework implementiert. Diese Klassen enthalten alles nötige, um ein Hasami Shogi Spiel durchführen zu können.

Die Visualisierung übernehmen zwei Klassen (visualisierung/Spielbrettvisualisierung sowie HasamiShogiPluginVisualization). Des weiteren gibt es eine Klasse (HasamiShogi), welche die Verwaltung der Spiele übernimmt, als die Informationen in die Datenbank schreibt und daraus liest.

Somit ist auch hier ein MVC-Pattern zu erkennen. HasamiShogiPlugin (Controller), HasamiShogi sowie die Klassen des Frameworks (Model) und die beiden Visualisierungsklassen (View).

Auf die Implementierung der Framework-Klassen soll an dieser Stelle nicht eingegangen werden, da sie unabhängig von der Implementierung als Plugin sind.

Letzte Änderung am March 28, 2007, at 11:15 AM von nimuelle.