2017-10-20 6 views
-2

Ich versuche ein einfaches Spiel zu Lernzwecken zu erstellen. Dieses Spiel hat zwei Spieler, jeder ist sein eigenes Objekt. Bei jedem Zug wechseln die Spieler.Spieler in einem Java-Spiel wechseln

Für jedes Mal ein anderer Spieler, die ich mit dem Schalter Spieler an der Reihe ist:

if (currentPlayer == playerOne) 
{ 
    currentPlayer = playerTwo; 
} 
else if (currentPlayer == playerTwo) 
{ 
    currentPlayer = playerOne; 
} 

Beachten Sie, dass currentPlayer und playerOne/Two Objekte der gleichen Klasse sind.

ich mich gefragt, ob es schlecht ist es auf diese Weise zu tun, oder wenn es bessere Möglichkeiten gibt, einen Spieler

+4

Was ist das Problem? –

+1

Warum wäre das nicht möglich? Was gibt es zu fragen? –

+0

Bitte sehen Sie: [Warum ist "Ist es möglich zu ..." eine schlecht formulierte Frage?] (Https://softwareengineering.meta.stackexchange.com/questions/7273/why-is-is-it-possible-to -a-schlecht-formulierte-Frage) Angenommen, es ist ** möglich, versuche etwas und frage nach dem, was du versucht hast, wenn du nicht weiterkommst. – EJoshuaS

Antwort

1

Es ist möglich, schalten Sie es auf diese Weise zu tun. Ihr gesamter Code würde dann die currentPlayer abwerten, um herauszufinden, welcher Spieler der aktuelle war.

Um dies zu tun, sollten beide Spieler den gleichen Typ teilen, vielleicht eine Player Klasse. Sie würden die aktuellen Spieler wie erklären:

Player currentPlayer; 

und Ihre Spieler

Player playerOne = new Player(...); 
Player playerTwo = new Player(...); 

Hinweis konstruieren, dass der ... Teil nicht das, was Sie eingeben werden, sondern ein Platzhalter für die tatsächlichen Informationen, die Sie Ich schreibe, wenn Sie den Player Konstruktor entwerfen.

0

Sie könnten die Spieler in einer Liste halten und sie wechseln ihren Index in dieser Liste erhalten:

// initialize 
List<Player> players = Arrays.asList(new Player(...),new Player(...)); 
Player currentPlayer = players.get(0); 


// switch Player: 
currentPlayer = players.get(1-players.indexOf(currentPlayer)); 

// version for more than two players: 
// select the next player from list and restart with the first after the last: 
currentPlayer = players.get((players.indexOf(currentPlayer)+1)%players.size()); 

// similar by cycling the list 
currentPlayer = players.remove(0); // get the next player from list 
players.add(currentPlayer); // put it at the end of the list