Strict Standards: Redefining already defined constructor for class wpdb in /www/htdocs/w0074a9b/mageto/wp-includes/wp-db.php on line 49

Deprecated: Assigning the return value of new by reference is deprecated in /www/htdocs/w0074a9b/mageto/wp-includes/cache.php on line 36

Strict Standards: Redefining already defined constructor for class WP_Object_Cache in /www/htdocs/w0074a9b/mageto/wp-includes/cache.php on line 403

Strict Standards: Declaration of Walker_Page::start_lvl() should be compatible with Walker::start_lvl($output) in /www/htdocs/w0074a9b/mageto/wp-includes/classes.php on line 534

Strict Standards: Declaration of Walker_Page::end_lvl() should be compatible with Walker::end_lvl($output) in /www/htdocs/w0074a9b/mageto/wp-includes/classes.php on line 534

Strict Standards: Declaration of Walker_Page::start_el() should be compatible with Walker::start_el($output) in /www/htdocs/w0074a9b/mageto/wp-includes/classes.php on line 534

Strict Standards: Declaration of Walker_Page::end_el() should be compatible with Walker::end_el($output) in /www/htdocs/w0074a9b/mageto/wp-includes/classes.php on line 534

Strict Standards: Declaration of Walker_PageDropdown::start_el() should be compatible with Walker::start_el($output) in /www/htdocs/w0074a9b/mageto/wp-includes/classes.php on line 553

Strict Standards: Declaration of Walker_Category::start_lvl() should be compatible with Walker::start_lvl($output) in /www/htdocs/w0074a9b/mageto/wp-includes/classes.php on line 649

Strict Standards: Declaration of Walker_Category::end_lvl() should be compatible with Walker::end_lvl($output) in /www/htdocs/w0074a9b/mageto/wp-includes/classes.php on line 649

Strict Standards: Declaration of Walker_Category::start_el() should be compatible with Walker::start_el($output) in /www/htdocs/w0074a9b/mageto/wp-includes/classes.php on line 649

Strict Standards: Declaration of Walker_Category::end_el() should be compatible with Walker::end_el($output) in /www/htdocs/w0074a9b/mageto/wp-includes/classes.php on line 649

Strict Standards: Declaration of Walker_CategoryDropdown::start_el() should be compatible with Walker::start_el($output) in /www/htdocs/w0074a9b/mageto/wp-includes/classes.php on line 674

Deprecated: Assigning the return value of new by reference is deprecated in /www/htdocs/w0074a9b/mageto/wp-includes/query.php on line 15

Deprecated: Assigning the return value of new by reference is deprecated in /www/htdocs/w0074a9b/mageto/wp-includes/theme.php on line 505

Deprecated: Assigning the return value of new by reference is deprecated in /www/htdocs/w0074a9b/mageto/wp-content/plugins/timezone.php on line 153
YaB - Yet another Bomberman » 2007 »

YaB - Yet another Bomberman

Anforderungsdefinition

Erstellt am: Februar 15th, 2007

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /www/htdocs/w0074a9b/mageto/wp-includes/formatting.php on line 75

Hier ist nun die von uns heute verfasste vorläufige Anforderungsdefinition:

YaB – Yet another Bomberman

Wir von BlueScreenDeveloper haben uns die Aufgabe gestellt einen neuartigen Bombermanklon zu schaffen, der alle bisherigen Version an Spielspaß überbietet.

Auf dem Weg zum fertigen Spiel orientierten wir uns am Phasenmodell objektorientierter Programmierung. In Anlehnung an dessen sechs theoretische Phasen:

  1. Problemanalyse und Anforderungsdefinition
  2. Fachlicher Entwurf
  3. Softwaretechnischer Entwurf
  4. Programmierung und Modultest
  5. Systemintegration und Systemtest
  6. Installation, Betrieb und Weiterentwicklung

Problemanalyse und Anforderungsdefinition

Spielinhalt

  • Eine vom Nutzer gesteuerte Figur bewegt sich durch die Spielumgebung. Diese ähnelt einem Labyrinth. In dem es verschiedene Arten von Hindernissen gibt, einige sind zerstörbar andere nicht. Unter den zerstörbaren Hindernissen sind verschiedene Arten von Powerup’s verborgen. Powerup’s werden beim Berühren automatisch aufgenommen.
  • Abhängig vom Spielmodus gibt es verschiedene Spielziele:
    • Singleplayer: Durch Vernichten von Gegnern und dem Sammeln von Powerup’s möglichst viele Punkte zu erzielen. Desweiteren ist ein Portal zu finden, welches in das nächste Level führt.
    • Multiplayer: Hier gibt es zwei Untermodi. Deathmatch, jeder spielt gegen jeden, das Ziel ist als Letzter übrig zubleiben. Die zweite Variante ist Teamdeathmatch, in dem das gegnerische Team besiegt werden muss.

Features

  • Internet: Der Highscore, des Singleplayermodus, wird online in einer MySQL Datenbank gespeichert. Das Spiel ist online verfügbar.
  • Editor: Im Editor sind eigene Karten erstellbar.
    • Es ist ein WYSIWYG-Edtior.
    • Man kann die Karten speichern und im Spiel verwenden.
    • Powerups können manuell und/oder automatisch gesetzt werden.
    • Es gibt eine Hilsfunktion zu jedem Element des Editors.
    • der Editor erkennt fehlerhafte Nutzereingaben und korrigiert diese auf Wunsch automatisch.
    • HoverChange(HC)- Es können mehrere Editorfelder mit einer Mausbewegung verändert werden.

Steuerung

  • Tastatur zur Spielsteuerung
    • Pfeiltasten/WASD zur Bewegung der Spielfigur
    • Leertaste/Strg zum Legen der Bomben
    • Zahlentasten zum Einsetzen der mächtigsten Powerup’s
  • Mausgesteuerte Grafikoberfläche für sonstige Funktionen (Highscore etc.)

Produktumgebung/ Systemvoraussetzungen

  • Das Spiel ist für alle Betriebssysteme geeignet, auf denen auch Java funktioniert, also u.a. Windows, Linux oder Macintosh.

Netzwerkfunktionen

Erstellt am: Februar 15th, 2007

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /www/htdocs/w0074a9b/mageto/wp-includes/formatting.php on line 75

Ich habe nun erste Gehversuche mit den Netzwerkklassen in Java gemacht und einige Klassen geschrieben, die als Basis für unseren Netzwerkmodus dienen werden. Das folgende UML Diagramm gibt einen (vereinfachten) Einblick in die Klassenstruktur:

UML-Diagramm der Networkklassen

Die NetworkHost Klassen repräsentiert einen PC im Netzwerk/Internet. Mit Hilfe der abstrakten Methode startConnecting() wird ein seperater Thread gestartet, der versucht eine Verbindung zu einem zweiten PC aufzubauen. Kommt die Verbindung zustande, so erhält man ein Socket Objekt, mit dem die Kommunikation zu dem PC möglich ist.

Die Session Klasse stellt eine Netzwerksitzung dar, die sich entweder im CONNECTING, SETUP oder RUNNING Status befindet. Sie benötigt eine Referenz zu einem NetworkHost Objekt, d.h. es besteht eine existenz-abhängige Assoziation (Komposition) zwischen den Klassen. Praktisch gesehen, bieten die Network~ Klassen einen Low-Level Zugriff auf die Netzwerkfunktionen wohingegen die Session Klasse eine abstraktere Sicht auf das Netzwerk ermöglicht.

Innerhalb der Session Klasse existiert ein ObjectOutput- sowie ein ObjectInputStream, mit dem Objekte zwischen den PC’s ausgetauscht werden können, vorrausgesetzt die Objekte bzw. deren Klassen implementieren das Serializable Interface.

Ein kleines Chatprogramm, welches die Netzwerkfunktionalitäten (es funktioniert ebenso übers Internet) demonstriert, werde ich am 17. Februar beim Tag der offenen Tür an der Gebrüder-Montgolfier-Schule vorstellen.

Bomberman Projekt

Erstellt am: Februar 11th, 2007

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /www/htdocs/w0074a9b/mageto/wp-includes/formatting.php on line 75

Bomberman

Wir (das sind Max, Philipp, Tom und Georg) haben uns entschlossen im Rahmen des Informatikunterrichts einen Bomberman-Klon zu entwickeln. Dazu bleiben uns noch ziemlich genau zwei Monate, in denen wir alle Phasen des Software Engineerings durchlaufen müssen.

Zur Entwicklung verwenden wir Netbeans 5.5 in Kombination mit dem UML Plugin. Das Programm wird in Java entwickelt und soll folgende Anforderungen erfüllen: Es muss eine persistente Datenhaltung enthalten sein sowie eine grafische Oberfläche.

Die Anforderungen, die wir uns gestellt haben sind folgende (Ausschnitt):

  • Komplette Implementierung des Bomberman Spielprinzips (man muss Bomben legen und somit den Gegen beseitigen)
  • Das Spiel sollte zu zweit an einem PC spielbar sein
  • Desweiteren sollte man das Spiel im Netzwerk auf zwei PC’s spielen können (entweder jeder gegen jeden oder in Teams à 2 Leute)
  • Ein Leveleditor zum Erzeugen der Karten
  • Eine Aufnahmefunktion mit der der Spielablauf aufgenommen und später wieder abgespielt werden kann
  • Eventuell eine Speicherfunktion, damit man Spielstände wieder laden kann und später weiterspielen kann
  • Etliche Powerups mit denen sich z.B. die Zeit verlangsamt oder mit denen man schneller Bomben legen kann