# Architektur



## maximilius (23. Jan 2008)

Der Karteneditor des Spiels Die Siedler3 bietet keine Funktionalität, Kartenteile zu kopieren.
Ich plane deshalb, ein Programm zu schreiben, welches Siedler3 Karten einliest und die Möglichkeit bietet Inseln zu kopieren.

Hier mal eine grobe Vorstellung, wie das ganze aussehen soll:






In dem mit (1) markiertem Bereich soll die geladene Siedler3 Karte in zwei Farben angezeigt werden.
Farbe 1 = Blau (entspricht Wasser)
Farbe 2 = Braun (entspricht Festland)

Der mit (2) markierte Bereich dient als Ablage für eine Insel.

Der Programmablauf soll vereinfacht so ablaufenlaufen:
(A) Der Benutzer läd eine Siedler3 Karte. Sie wird bei (1) angezeigt. Der Radiobutton „Insel aus Karte in Ablage kopieren„ ist gewählt.
Fährt der Benutzer mit der Maus über die Karte (1) und ist über einer Insel (braun), soll diese grün werden, verlässt er sie, wird sie wieder braun.
Klickt er eine Insel an, auf der er sich befindet, soll sie in die Ablage (2) dupliziert.

(B) Jetzt wählt der Benutzer den Radiobutton „Insel aus Ablage in Karte einfügen“.
Wenn der Benutzer jetzt über die Karte (1) fährt, soll die Insel aus der Ablage an seinem Mauszeiger hängen und rot sein, wenn sie eine Insel auf der Karte überlappt oder grün sein, wenn sich unter ihr nur Wasser befindet.
Im Falle, dass sie nur über Wasser schwebt, soll sie bei einem Klick des Benutzers in die Karte einfügt werden.

(C) Hat der Benutzer eine Insel fehlplatziert, bietet ihm die Auswahl des Radiobuttons „Insel aus Karte löschen“ folgende Möglichkeit:
Fährt er mit der Maus über die Karte, sollen sich die Farben der Inseln verhalten, wie im Fall (A).
Bei einem Klick auf eine unter dem Mauspfeil liegende Insel, soll diese in der Karte durch Wasser ersetzt werden.

Nun zur architektonischen Frage:
Was ist in euren Augen eine sinnvolle Klassenarchitektur für die Karten, Inseln, Kopier/Lösch Funktionen, Darstellung?

Meine Gedanken:
- Kartenausschnittsobjekt, das bei (1) die komplette Karte und bei (2) nur einen Teil (mit einer Insel) beinhaltet?
- Inselobjekte, wobei bei (2) ein einzelnes Inselobjekt und bei (1) mehrere Inselobjekte gekapselt von einem Kartenobjekt gehalten sind?
- Sollen Insel/Karten/Kartenausschnittsobjekte sich selbst zeichnen können oder soll ein anderes Objekt sie laden, auswerten und zeichnen?
- Zustandsentwurfsmuster bei der Karte (1) anwenden für die 3 Modi (von (1) nach (2); von (2) nach (1); in (1) löschen)

lg Stephan


----------



## byte (23. Jan 2008)

Was ist eine Klassenarchitektur?


----------



## maximilius (23. Jan 2008)

Ich meine mit Klassenarchitektur die Klassen und deren Beziehungen zueinander.

Mit anderen Worten:
Die Struktur, die man dann mit einem Klassendiagramm abbilden könnte.

lg Stephan


----------

