Fortgeschrittene objektorientierte Programmierung
LVA 185.211, VL 2.0, 2010 S

1. Übungsaufgabe

Entwickeln Sie in einer stark typisierten objektorientierten Sprache Ihrer Wahl (z.B. C++, Java oder C#) ein Schlangenspiel (ähnlich dem bekannten Spiel Snake, aber mit mehreren Schlangen, mehreren Spielern und auf mehrere Computer verteilt) entsprechend folgender Beschreibung:

Ein Spiel wird von einem Spieler auf einem Rechner gestartet, wobei ein Fenster mit MxN annähernd quadratischen Feldern (M und N beim Aufruf festlegbar) am Bildschirm erscheint. Auf einem zufällig gewählten Feld befindet sich der Kopf der Schlange des Spielers mit zufällig gewählter Farbe (rot, grün oder blau). Zu Beginn besteht jede Schlange nur aus einem Kopf, der ein Feld belegt. Der Kopf bewegt sich nur dann in ein benachbartes Feld, wenn der Spieler eine Taste drückt, welche die Bewegungsrichtung bestimmt. Jedes weitere Feld der Schlange folgt dem vorangegangenen Feld derselben Schlange. Tastendrücke werden ignoriert, wenn sie den Schlangenkopf in Richtung des zweiten Feldes der Schlange bewegen würden; für weitere Felder der Schlange gilt das nicht.

In unregelmäßigen Abständen entstehen auf freien Feldern weitere zufällig gefärbte Schlangenköpfe, die sich selbständig bewegen und vom Computer nach einem Zufallsmuster gesteuert werden. Diese dienen als Futter, können aber auch feindlich sein. Auf Feldern, die direkt an ein Feld mit einem Schlangenkopf angrenzen, darf aber kein neuer Schlangenkopf entstehen. Wenn ein Schlangenkopf sich auf ein Feld bewegt, auf dem sich bereits ein Feld einer Schlange befindet, passiert Folgendes:

Das bedeutet im Einzelnen:

Weitere Spieler können sich jederzeit (remote) mit dem Spiel verbinden und bekommen ein gleiches Fenster wie der erste Spieler. Dabei entstehen auf zufällig gewählten freien Feldern (aber nicht in unmittelbarer Nachbarschaft zu bereits existierenden Schlangenköpfen) neue zufällig gefärbte Schlangenköpfe, die von den neuen Spielern gesteuert werden.

Die Eigenschaften des Fensterrandes ändern sich während des Spiels periodisch:

Der aktuelle Modus muss irgendwie angezeigt werden, und vor kurz bevorstehenden Änderungen soll es eine akustische oder optische Warnung geben. Alle vom Modus abhängigen Einschränkungen beziehen sich nur auf den Kopf der Schlange. Wenn der Kopf einer Schlange im Wrap-Modus auf die gegenüberliegende Seite gesprungen ist, dann kann der Rest der Schlange in jedem Modus folgen.

Das Spiel endet, wenn kein neuer Schlangenkopf mehr erzeugt werden kann, wenn also alle verbliebenen freien Felder an Felder mit Schlangenköpfen angrenzen. Gewinner ist der Spieler, der am Ende die längste Schlange hat. Das kann auch der Computer sein.

Vor allem zur Fehlersuche ist es sinnvoll, wenn Spieler auf nur einem Rechner mehrere Fenster zum selben Spiel haben können und mehrere Schlangen über unterschiedliche Tasten bedienbar sind.

Änderungen der Aufgabenstellung mit dem Ziel, die Spielbarkeit oder grafische Darstellung zu verbessern, werden gerne akzeptiert.

Complang
Puntigam
   Kontakt
   Research
   Lehre
      OOP
      Typsysteme
      EP2
      FOOP
      Prog.spr.
      frühere Lehre
         LVAs 2017 W
         LVAs 2017 S
         LVAs 2016 W
         LVAs 2016 S
         LVAs 2015 W
         LVAs 2015 S
         LVAs 2014 W
         LVAs 2014 S
         LVAs 2013 W
         LVAs 2013 S
         LVAs 2012 W
         LVAs 2012 S
         LVAs 2011 W
         LVAs 2011 S
         LVAs 2010 W
         LVAs 2010 S
            Prog.spr.
            FOOP
               1. Aufgabe
               2. Aufgabe
               3. Aufgabe
         LVAs 2009 W
         LVAs 2009 S
         LVAs 2008 W
         LVAs 2008 S
         LVAs 2007 W
         LVAs 2007 S
         LVAs 2006 W
         LVAs 2006 S
         LVAs 2005 W
         LVAs 2005 S
         LVAs 2004 W
         LVAs 2004 S
         LVAs 2003 W
   Links
Sitemap
Kontakt
Schnellzugriff:
nächste Aufgabe
Fakultät für Informatik
Technische Universität Wien
Anfang | HTML 4.01 | Datenschutzerklärung | letzte Änderung: 2010-03-18 (Puntigam)