Switche versenken

Switche versenken ist eine Variante von Schiffe versenken, bei der zunächst virtuelle Schiffe gesetzt und dann durch Kabelstecken versenkt werden müssen.

Hardwarevoraussetzungen

Die Holzkiste enthält

2×3 HP 2524 für die Spieler

2x HP 2650 als Gegenstelle

rund 150x TP-Patchlabel

2x LC-SC LWL-Patchkabel für die Verbindung zwischen dem untersten 25er und dem 26er auf jeder Seite

1x SC-SC LWL-Patchkabel für die Verbindung der beiden obersten 25er

2x SFP-gbics

4x HP-Stacking-Kabel

Noch fehlen:

2x Notebook, eines für Skripte und Browser, das andere nur Browser. Ports 47 bis 50 der 26er können zum Verbinden von Notebooks oder Switchen untereinander verwendet werden.

Softwarevoraussetzungen

Perl 5.10.1 und:

SNMP-Library HPSNMP.pm im Perl-Installationsverzeichnis

libnet-snmp-perl

libdbi-perl

libdbd-sqlite3-perl

PHP5 und:

php5-sqlite

SQLite3

Spielidee

Jeder Spieler hat 3 HP 2524 gestapelt vor sich stehen. Diese stellen die gegnerischen Felder dar. Als „dumme“ Gegenstellen dienen die 2650, die nur dazu dienen, eine Gegenstelle am Kabel zu haben.

Vor Spielbeginn kann das Skript port_info.pl dazu genutzt werden, den Port-Status (up/down, enabled/disabled) einmalig von allen 6 Switchen auszulesen und in die SQLite-Datenbank zu schreiben.

In der Vorbereitungsphase werden die eigenen Schiffe über eine PHP-Oberfläche gesetzt, indem die einzelnen Ports mittels port_update.pl per SNMP auf den Switchen enabled oder disabled werden, und gleichzeitig diese Änderungen in der SQLite-Datenbank vermerkt werden. Während der Vorbereitungsphase dürfen weder port_info.pl noch port_info_spiel.pl laufen

Während der Spielphase läuft dauerhaft ein Perl-Skript port_info_spiel.pl, was in einer Dauerschleife per SNMP den UP/Down-Status aller 144 2524-Switchports ausliest und in eine SQLite-Datenbank schreibt. Wird dann in der Spielphase ein Schiff getroffen, so geht der Port „up“. Dies kann man in der PHP-Oberfläche verfolgen, da sich die PHP-Seite alle 500 ms neu lädt und dabei den Status der SQLite-Datenbank ausliest. Außerdem können getroffene Schiffe an den LEDs am Switch verfolgt werden.

Spielablauf

Vorbereitungsphase

In der ersten Phase setzen die Spieler ihre Schiffe über die Dateien anlegen_01.php bzw. anlegen_02.php im Webbrowser durch einfaches Klicken. Sind alle Schiffe gesetzt (Anzahl und Größe müssen derzeit noch manuell vorgegeben werden, wird auch nicht überprüft) werden mit Klick auf „Spiel starten“ die Dateien spielen_01.php bzw. spielen_02.php aufgerufen.

Spielphase

Die beiden Spieldateien sind so aufgebaut, dass der jeweilige Spieler im linken Bereich sieht, wo er bereits gegenerische Schiffe getroffen hat, und im rechten Bereich seine eigenen Schiffe samt gegnerischer Treffer. Wird irgendwo ein Schiff per Kabelstecken getroffen, erkennt das dauerhaft laufende Perl-Skript dies innerhalb von etwa 2 Sekunden und zeigt es auf der php-Seite an.

Skripte

Die Skripte liegen hier.

ToDo's

IPC ordentlich machen, vielleicht mit json

Weboberfläche mit ajax-requests aktualisieren

Bilder