# FlowerWarsPP FlowerWarsPP ist eine Variation des Spiels [Ponte del Diavolo](https://www.brettspielnetz.de/spielregeln/ponte+del+diavolo.php). # Motivation Die Gebrüder Gartenpfleger Torsten und Torben streiten sich um Tamara und möchten sie durch das Herrichten einer hübschen Gartenlandschaft beeindrucken. Leider müssen sich die beiden die Wiese hierfür teilen. Wer schafft es die meisten Gärten zu bepflanzen und diese zu verzieren indem sie durch Gräben miteinander verbunden werden? # Das Spiel FlowerWarsPP ist ein Spiel für zwei Spieler, die mit den Farben **Rot** und **Blau** spielen. Das Ziel beider Spieler ist es eine Wiese so weit wie möglich mit Gärten zu bepflanzen. # Das Spielbrett Gespielt wird auf einem dreieckigen Spielbrett mit einer Seitenlänge `3 <= n <= 30`. Die Gitterpunkte, im Folgenden **Punkte** genannt, werden mit Spalten- und Zeilenkoordinaten versehen, wobei unten links die Koordinate `1,1` liegt. Hier ist ein Spielbrett der Größe `n = 3` dargestellt:  Das Spielfeld stellt eine dreieckige Wiese dar, die wiederum in kleine dreieckige Teilflächen aufgeteilt ist. Die von drei Punkten eingeschlossenen Flächen werden können mit **Blumen** bepflanzt werden. Auf der Kante von einem Punkt zu einem direkten Nachbarn kann ein Wassergraben, kurz **Graben**, gebaut werden. Ein Punkt hat hierbei stets maximal `6` direkte Nachbarn. Blumen und Gräben sind die Hauptbestandteile von FlowerWarsPP.  Auf diesem Spielbrett ist folgende Situation gezeigt: - Der rote Spieler hat Blumen auf (`1,1`, `2,1`, `1,2`) und (`2,1`, `3,1`, `2,2`) - Der blaue Spieler hat eine Blume auf (`1,3`, `2,3`, `1,4`) - Der rote Spieler hat einen Graben von `1,2` nach `2,2`, mit der seine beiden Blumen verbunden werden # Zugregeln - Der rote Spieler hat den ersten Zug, danach wird beginnend mit dem blauen Spieler abwechselnd weiter gezogen. - In einem Zug muss der Spieler sich entscheiden ob er **zwei** Blumen pflanzen *oder* **einen** Graben bauen möchte. - Die beiden Blumen können beliebig auf dem Spielbrett positioniert werden, müssen jedoch auf leeren Feldern unter Einhaltung der nachfolgenden Regeln für Blumenbeete, Gärten und Gräben gebaut werden. - Gräben müssen immer zwei eigene Blumen verbinden, genauer zwei Eckpunkte von Feldern, in denen eigene Blumen gepflanzt sind. - Darüber hinaus kann ein Spieler zu einem beliebigen Zeitpunkt aufgeben, der andere Spieler gewinnt dann das Spiel. ## Gärten - Eine Ansammlung von `4` gleichfarbigen Blumen, die sich an den Seiten berühren, nennt man einen **Garten**. Ein Garten besteht immer aus exakt `4` Blumen. - Eine Ansammlung von `1`, `2` oder `3` Blumen nennt man ein **Blumenbeet**. Ein Blumenbeet kann nie `5` Blumen oder mehr umfassen. - Ein Garten darf weder mit einem anderen eigenen Garten noch mit einem anderen eigenen Blumenbeet gemeinsame Eckpunkte haben. Das heißt in anderen Worten, dass Gärten eigene Gärten oder Blumenbeete nicht über eine gleiche Seite berühren dürfen (weil dadurch automatisch die Gartengröße überschritten würde) und auch nicht über einen gemeinsamen Eckpunkt. - Blumenbeete dürfen sich über Eckpunkte berühren. - Blumenbeete dürfen nur dann zu einem Garten ausgebaut werden, wenn ... - ... sie dann nicht mehr als `4` Blumen enthalten. - ... sie dann keine weiteren eigenen Gärten oder Blumenbeete berühren. - Diese Abstandsregeln gelten nicht für Blumenbeete und Gärten unterschiedlicher Farbe. Blumenbeete und Gärten unterschiedlicher Farbe dürfen beliebig nebeneinander liegen oder sich über Eckpunkte berühren. ## Gräben - Ein Graben verbindet zwei Blumen über dessen Eckpunkte. Diese Verbindung darf maximal einen Schritt entlang der Gitternetzlinien des Spielfeldes lang sein. - Ein *Punkt* kann nur ein Grabenende tragen und ist somit für zukünftige Gräben blockiert. - Die beiden Felder, die sich mit dem Graben eine gemeinsame Seite teilen, müssen beim Bau des Grabens leer sein. Dieselben Felder gelten nach Bau des Grabens als unfruchtbar und dürfen von keinen Blumen, unabhängig von der Farbe, bepflanzt werden. Auf den Bau von Gräben haben unfruchtbare *Felder* keinen Einfluss. # Spielende - Kann ein Spieler keinen Zug mehr machen, endet das Spiel sofort. - Kann ein Spieler keine 2 Blumen mehr anpflanzen und verzichtet auf das Bauen eines Grabens, kann er das Spiel beenden. - Nach Zugende werden für beide Spieler die Punkte nach diesen Regeln ermittelt: - Ein einzelner Garten, der nicht über einen Graben mit anderen Gärten verbunden ist, zählt `p(1) = 1` Punkt. - Miteinander verbundene Gärten (auch über einfache Blumenbeete hinweg) geben `p(n)` Punkte, wobei `n` die Anzahl der verbundenen Gärten beschreibt: `p(n) = p(n-1) + n` - Bei Punktegleichstand endet das Spiel unentschieden. # ASCII board design ``` /\ / \ / \ / ++ \ / ++++ \ /__________\ /\ /\ / \ ++++ / \ / \ ++ / \ / ** \ / \ / **** \ / \ /__________\/__________\ /\ /+ /\ / \ **** / + / \ / \ ** / + / \ / ** \ / + / ++ \ / **** \ / + / ++++ \ /__________\/__________+/__________\ ``` # Kompilieren und Starten Das Projekt basiert auf dem Build-System **Maven**. Folgendermaßen kann ein ausführbares jar-Archiv erzeugt werden: ``` mvn compile assembly:single ``` Dieses erzeugte Jar-Archiv kann wie folgt gestartet werden: ``` java -jar target/NAME_OF_THE_JAR_FILE.jar -size <BOARD_SIZE> ```