Switche versenken (alte Version)
Switche versenken ist eine Variante von Schiffe versenken, bei der zunächst virtuelle Schiffe gesetzt und dann durch Kabelstecken versenkt werden müssen.
Das hier ist die alte (originale) Version des Switche versenken Spieles. Die neue Version befindet sich hier.
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