Hallo Boarduser,
ich wende mich nun an euch, da ich nicht mehr weiter komme.
Die Aufgabenstellung ist eine einfachere Version des Spiels Carcassonne zu implementieren. Es gibt eine bestimmte Art der Kartendarstellung für das Spiel: Nord, Ost, Süd, West.
Dort stehen jeweils Zahlen: 0 für Wiese, 1 für Straße und 2 für Stadt.
Die Karten werden generiert und alles läuft wunderbar. Es geht um das Spielen. Die Aufgabe verlangt folgendes:
5 Spielverlauf:
Vor dem Spielbeginn wird als erstes die als Parameter ubergebene Datei ausgelesen und alle dort enthaltenen Karten werden wieder auf den Stack gelegt. (CHECK)
Dann wird die Startkarte (2101) auf das Spielfeld gelegt und das Spiel beginnt. Achten Sie hierbei darauf, die Speicherung des Spielfelds dynamisch zu gestalten.
Solange Karten auf dem Stack liegen werden nun die folgenden Schritte ausgefuhrt:
1. Eine Karte wird vom Stack genommen
2. Alle moglichen Positionen werden von links unten beginnend von links nach rechts durchlaufen.
3. An jeder Position wird uberpruft, ob die aktuelle Karte entweder sofort oder durch Drehung
im Uhrzeigersinn an dieser Position angelegt werden kann. Sobald sie das erste Mal passt, wird für diese Position das folgende berechnet:
(a) Die maximale Lange der anliegenden Straen. Dabei gilt, dass eine Strae an einer Kreuzung endet. Jede Karte uber die die so berechnete langste Strae verlauft bringt einen
Punkt. Dazu kommt abschließeend 1 Punkt fur die anzulegende Karte selbst.
(b) Die maximale Größe der anliegenden Städte. Jede Karte auf der diese Stadt liegt bringt 2 Punkte. Dazu kommen 2 Punkte fur die Karte selbst.
(c) Liegt die Karte nur an Wiesen an, so ist der Wert der Position 0.
(d) Abschlieend wird überpruft ob das Maximum beider Werte größer ist als das Maximum
aller vorherigen Positionen. Ist das der Fall, wird diese Position samt der gefundenen
Ausrichtung abgespeichert.
4. Wurden alle Positionen uberpruft, wird die Karte an die Position mit dem maximalen Wert angelegt. Wurde keine Position gefunden, wird die Karte verworfen.
Wie würdet ihr da drangehen? Ich hab die Startkarte 2101. Ich nehme die erste karte vom Stack, überprüfe zunächst unten 1. ob ihr Nordwert = Südwert der Startkarte ist, wenn ja, punkte erhöhen, wie oben beschrieben, wenn nein, karte im Uhrzeigersinn rotieren und prüfen. Dabei punkte immer mit ner Variable maxScore vergleichen. Wenn punkte höher als maxScore, maxScore = punkte und karte dorthin legen. Wie Speichern, dass ich da später wieder vergleichen kann? Wie weitermachen mit mehreren Karten? Wie überprüfe ich die Codes Nord Ost Süd West, wenn bspw. 2 Karten nebeneinander liegen? Dann habe ich Nord1,Nord2,Ost2,Süd2,Süd1,West1...Wie mache ich das Dynamisch****?
ich wende mich nun an euch, da ich nicht mehr weiter komme.
Die Aufgabenstellung ist eine einfachere Version des Spiels Carcassonne zu implementieren. Es gibt eine bestimmte Art der Kartendarstellung für das Spiel: Nord, Ost, Süd, West.
Dort stehen jeweils Zahlen: 0 für Wiese, 1 für Straße und 2 für Stadt.
Die Karten werden generiert und alles läuft wunderbar. Es geht um das Spielen. Die Aufgabe verlangt folgendes:
5 Spielverlauf:
Vor dem Spielbeginn wird als erstes die als Parameter ubergebene Datei ausgelesen und alle dort enthaltenen Karten werden wieder auf den Stack gelegt. (CHECK)
Dann wird die Startkarte (2101) auf das Spielfeld gelegt und das Spiel beginnt. Achten Sie hierbei darauf, die Speicherung des Spielfelds dynamisch zu gestalten.
Solange Karten auf dem Stack liegen werden nun die folgenden Schritte ausgefuhrt:
1. Eine Karte wird vom Stack genommen
2. Alle moglichen Positionen werden von links unten beginnend von links nach rechts durchlaufen.
3. An jeder Position wird uberpruft, ob die aktuelle Karte entweder sofort oder durch Drehung
im Uhrzeigersinn an dieser Position angelegt werden kann. Sobald sie das erste Mal passt, wird für diese Position das folgende berechnet:
(a) Die maximale Lange der anliegenden Straen. Dabei gilt, dass eine Strae an einer Kreuzung endet. Jede Karte uber die die so berechnete langste Strae verlauft bringt einen
Punkt. Dazu kommt abschließeend 1 Punkt fur die anzulegende Karte selbst.
(b) Die maximale Größe der anliegenden Städte. Jede Karte auf der diese Stadt liegt bringt 2 Punkte. Dazu kommen 2 Punkte fur die Karte selbst.
(c) Liegt die Karte nur an Wiesen an, so ist der Wert der Position 0.
(d) Abschlieend wird überpruft ob das Maximum beider Werte größer ist als das Maximum
aller vorherigen Positionen. Ist das der Fall, wird diese Position samt der gefundenen
Ausrichtung abgespeichert.
4. Wurden alle Positionen uberpruft, wird die Karte an die Position mit dem maximalen Wert angelegt. Wurde keine Position gefunden, wird die Karte verworfen.
Wie würdet ihr da drangehen? Ich hab die Startkarte 2101. Ich nehme die erste karte vom Stack, überprüfe zunächst unten 1. ob ihr Nordwert = Südwert der Startkarte ist, wenn ja, punkte erhöhen, wie oben beschrieben, wenn nein, karte im Uhrzeigersinn rotieren und prüfen. Dabei punkte immer mit ner Variable maxScore vergleichen. Wenn punkte höher als maxScore, maxScore = punkte und karte dorthin legen. Wie Speichern, dass ich da später wieder vergleichen kann? Wie weitermachen mit mehreren Karten? Wie überprüfe ich die Codes Nord Ost Süd West, wenn bspw. 2 Karten nebeneinander liegen? Dann habe ich Nord1,Nord2,Ost2,Süd2,Süd1,West1...Wie mache ich das Dynamisch****?