# Design Pattern gesucht für Spielregeln



## qwerqer (1. Dez 2011)

Hallo!

Ich arbeite derzeit an einem Schulprojekt, in dem wir ein Spiel realisieren. In meinem Fall wird "Die Siedler von Catan" in einer einfacheren Variante implementiert.

Die Professoren haben uns nahe gelegt ein Design Pattern für die Spielregeln zu verwenden, leider kann ich im Netz keine wirklich brauchbaren Infos zu diesem Thema finden. :noe:

Kann mir da vielleicht jemand einen Tipp geben bitte, wie man das Problem mit den Spielregeln sauber lösen kann, ohne den kompletten Code umschreiben zu müssen, wenn eine Regel hinzu kommt oder geändert wird?

Vielen Dank!

Grüße,

Stefan


----------



## Kr0e (1. Dez 2011)

Ich würde erstmal ein Interface machen:


```
public interface Validator {

    // Gibt true zurück wenn der Move valid ist, sonst false...
    boolean validateMove(Player a, World w, Move m);
}
```

Was jetzt Player, World oder Move ist, kannst du dir selbst überlegen -> je nach Anwendungsfall.
Die Impl. dieses Interfaces wäre dann quasi deine Spielregelblackbox wo du überprüfst, welche Moves ausgeführt werden können.

Z.B. könnte man impl., dass falls Player.isTurn() == false ist oder so, generell alles abgelehnt wird oder so.. Nur als grobe Idee, hab auch grad nicht allzu viel Zeit...

Der 2te Schritt(Falls dir und deinem Prof. der erste Schritt nicht ausreicht) wäre dann den Validator iwie zu abstrahieren, sprich sich ein System auszudenken mit States eines Players oder sowas in der Art. Und den Moves könnte man dann Namen geben und das ganze System so impl., dass z.b. Move="Kill Enemy" nicht geht, solange der Player nicht den state (isTurn) besitzt. Das kann man dann bliebig abstrahieren und automatisieren.

Evt. sogar mit Annotation und das ganze Deklarativ angehen aber das wäre vermutlcih für dich und das Projekt erstmal zuviel

Gruß,
Chris


----------



## qwerqer (2. Dez 2011)

Das klingt schon mal nach einem vernünftigen Ansatz 

Vielen Dank.


----------

