Herausfinden welcher Spieler die Runde begonnen hat

Hier kann über Fragen zum Spiel, dem Server und den Client diskutiert werden.
R'lyestux
Beiträge: 24
Registriert: Mi 21. Dez 2016, 16:46

Herausfinden welcher Spieler die Runde begonnen hat

Beitragvon R'lyestux » Do 9. Mär 2017, 20:25

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?

soed
Beiträge: 8
Registriert: Fr 16. Okt 2015, 08:01

Re: Herausfinden welcher Spieler die Runde begonnen hat

Beitragvon soed » Fr 10. Mär 2017, 09:34

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

R'lyestux
Beiträge: 24
Registriert: Mi 21. Dez 2016, 16:46

Re: Herausfinden welcher Spieler die Runde begonnen hat

Beitragvon R'lyestux » So 12. Mär 2017, 21:26

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.

soed
Beiträge: 8
Registriert: Fr 16. Okt 2015, 08:01

Re: Herausfinden welcher Spieler die Runde begonnen hat

Beitragvon soed » Mo 13. Mär 2017, 07:38

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.