Softwareentwicklungspraktikum Nebenfach Erweiterungen der

PD Dr. Ulrich Schöpp
Stephan Barth
Ludwig-Maximilians-Universität München
Institut für Informatik
WS 2015/16
Softwareentwicklungspraktikum Nebenfach
Erweiterungen der Planstadt
Das Projekt Planstadt kann auf vielfältige Weise erweitert werden. Dieses Blatt stellt Erweiterungsvorschläge vor, die optional implementiert werden können. Der zu erwartende Aufwand
wird durch eine Anzahl an ? angegeben, wobei mehr ? für mehr Aufwand stehen.
Erweiterungen werden bei der Bewertung des Projekts berücksichtigt. Achten Sie aber darauf, dass zunächst die Grundfunktionalität aus der Projektbeschreibung vollständig implementiert ist. Bewertungskriterien sind unter anderem die Korrektheit der Implementierung
der Aufgabenstellung, die Umsetzung von Inhalten des Plenums (z.B. die Aufteilung des Programms nach dem Model-View-Controller-Muster), die Dokumentation und Lesbarkeit des
Programms, usw.
Erweiterung 1 (Katastrophen – ?) Im Laufe des Spiels können Katastrophen auftreten.
Dies können die folgenden sein, aber auch andere Katastrophen sind durchaus möglich.
• Monster: Tritt nur auf, wenn es Felder mit sehr hoher Verschmutzung gibt. Ein Monster
zieht durch die Stadt und zerstört Bauwerke, über die es läuft. Es wird dabei durchgehend von Verschmutzung angezogen.
• Feuer: Ein Feuer breitet sich langsam in der Stadt aus.
• Flut: Ein Gewässer tritt über das Ufer und hat das Potential alles zu zerstören, was im
Weg ist.
• Kernschmelze: Ein Kernkraftwerk fliegt in die Luft und verstrahlt die Landschaft.
• Erdbeben: Infolge eines Erdebens brechen an mehreren Stellen der Stadt Feuer aus.
Ebenfalls können vereinzelte Gebäude direkt zerstört werden.
• Smog: Für eine Weile steigen die Verschmutzungswerte nur an und können nicht sinken. Dies kann ferner den Level von Bauwerken senken, die dadurch von sehr starker
Verschmutzung betroffen sind.
Einige Details zu einigen der Katastrophen
• Monster: Es zieht zufällig von Feld zu Nachbarfeld. Dabei bevorzugt es aber Felder mit
höherer Verschmutzung. Hat eine gewisse Lebensdauer, die bei der Erzeugung festgelegt
wird. Ist die Lebensdauer überschritten, so verschwindet das Monster.
• Flut: Ein Gebiet wird von Wasser überflutet. Das ist sowohl anzuzeigen, wie auch einige
Bauwerke auf dem Weg sind zu zerstören.
• Kernschmelze: Tritt nur auf, wenn es Kernkraftwerke gibt. Das Kraftwerk explodiert
und in einem gewissen Umkreis werden Verstahlungen auf der Karte gesetzt. Bauwerke,
die von Verstrahlung betroffen sind, werden zerstört. So lange auf diesen Feldern noch
Verstrahlung zu finden ist (>0,5), kann auf diesen Feldern auch nichts mehr gebaut
werden.
Erweiterung 2 (Laden & Speichern – ?) Für eine Speicherfunktion können Sie den
kompletten Datenstand des Modells in ein JSON-Objekt übertragen und dieses dann als
Datei speichern. Zum Laden muss diese Datei entsprechend wieder ausgelesen werden.
Zusätzlich bietet es sich an es zu ermöglichen einen Dateinamen zum Laden und Speichern
angeben zu können, so dass man verschiedene Spiele gleichzeitig gespeichert haben kann.
Erweiterung 3 (Netzwerk – ???) Implementieren Sie einen Mehrspielermodus über Netzwerk. Mehrere Spieler sollen dazu kooperativ zusammen eine Stadt lenken.
Dazu soll die Simulation des Spiels nur auf dem Server stattfinden. Der Server soll allen
Clients den Datenstand schicken. Alle Aktionen der Spieler sollen von den Clients an den
Server geschickt werden. Diese setzt die Auswirkungen der Aktionen um.
Falls Sie auch Laden & Speichern“ implementieren, bietet es sich an die gleichen Methoden
”
zum Umwandeln des Spielstands in das JSON-Format zu verwenden.
Erweiterung 4 (Eigene Bauwerke – ??)
Entwickeln Sie eigene Bauwerke für das Spiel.
Um Bauwerke zu entwickeln, die sich gut in das Spiel einfügen, ist es vermutlich notwendig
zumindestens einige Regeln im gegebenen JSON-Regel-Format zu schreiben.
Damit die Bauwerke eine interessante Ergänzung sind, sollten Sie sich überlegen, was diese
Bauwerke den existierenden Bauwerken gegenüber besonders macht.
Erweiterung 5 (Genauere Finanzen – ?) Verbessern Sie das Finanzsystem: Ermöglichen
Sie es die Finanzierungsraten für Infrastruktur, Feuerwehr und Polizei zu ändern.
Die Finanzierungsraten sind durch die Werte INFRARATIO, FIRERATIO und POLICERATIO festgelegt. Diese Werte stellen eine Prozentzahl dar, wie weit der entsprechende Bereich (Infrastruktur, Feuerwehr und Polizei) finanziert wird.
Zusätzlich muss die JSON-Datei planstadt.json angepasst werden, da in ihr automatisch
diese Werte vor der Verwendung auf 100 gesetzt werden, damit die Regeln auch sinnvoll
funktionieren, wenn dieser Aspekt nicht umgesetzt ist.
Dazu müssen alle Regeln der Form
{
"type":"globals",
"set":[0,0,...],
"op":"max",
"args":[100],
"cond":"true"
},
entfernt werden, an der Stelle ... steht entsprechend INFRARATIO, FIRERATIO, oder POLICERATIO.