Seite 1 von 1

Herausfinden welcher Spieler die Runde begonnen hat

Verfasst: Do 9. Mär 2017, 20:25
von R'lyestux
Hallo,
gibt es eine Funktion, die Anzeigt, welcher Spieler der Erste der jeweiligen Runde ist?

Ich habe zwar was von einer Funktion names getStartPlayer() gelesen, allerdings steht in der Beschreibung nicht, ob sie ach für den beginn der Runde funktioniert.


In den Regel steht außerdem noch: "Es beginnt der Spieler, dessen Dampfer sich am dichtesten am
Ziel befindet, also am weitesten vorne hinsichtlich des vordersten sichtbaren Segments."

Kann man dies mithilfe der Feldpunkte bestimmen? Also eine höhere Feldpunktzahl ist gleich weiter vorne?

Re: Herausfinden welcher Spieler die Runde begonnen hat

Verfasst: Fr 10. Mär 2017, 09:34
von soed
Moin,

welcher Spieler anfängt wird anhand der Richtung des vordersten Segments bestimmt. Mit dieser Richtung kannst du die Methode

Code: Alles auswählen

public static int distanceBetweenPoints(int direction, int column1, int row1, int column2, int row2)

aus dem GameState benutzen, um den Abstand zwischen dem roten und blauen Spieler zu kriegen.

Code: Alles auswählen

getStartPlayer()
gibt an, welcher Spieler zuerst gezogen hat, ist also nicht das was du willst.

An den Feldpunkten alleine kannst du das nicht bestimmen.

Intern wird die Funktion

Code: Alles auswählen

private Player getLeadingPlayer()
genutzt, um den führenden Spieler zu bestimmen, wo dann auch Geschwindigkeit, Kohle und genaue Position benutzt wird.

Viele Grüße

Sören

Re: Herausfinden welcher Spieler die Runde begonnen hat

Verfasst: So 12. Mär 2017, 21:26
von R'lyestux
Irgendwie finde ich eine Funktion, wie:

Code: Alles auswählen

private Player getLeadingPlayer()
viel besser als den jetztige Weg. Vor allen da man noch an die Laufzeit denken muss. Da wäre eine effizente Lösung besser. Immerhin steht in der xml Datei auch immer der Startplayer einer jeden Runde.

Re: Herausfinden welcher Spieler die Runde begonnen hat

Verfasst: Mo 13. Mär 2017, 07:38
von soed
Moin,

Code: Alles auswählen

startPlayer
ist der Spieler der das Spiel angefangen hat, also der der den ersten Zug gemacht hat, nicht der Startspieler der Runde. Ich bezweifle, dass jetzt wo der Wettkampf schon angefangen hat die XML-Schnittstelle noch erweitert wird.

Wenn du

Code: Alles auswählen

public static int distanceBetweenPoints(int direction, int column1, int row1, int column2, int row2)
bei Abstand 0 um entsprechende Abfragen, wie sie in den Spielregeln stehen, erweiterst, hast du

Code: Alles auswählen

private Player getLeadingPlayer()
, etwas anderes tut der Server auch nicht.