2012-08-15 145 views
0

在回合制遊戲中,我想找到上一位玩家。 要查找下一個球員,我只需鍵入:如何寫這段代碼更乾淨

int lastPlayer = match.currentPlayer - 1; 

的問題是當currentPlayer是播放機1。lastPlayer變爲0,這是不對的。它應該是player6。

爲了解決這個問題,我可以這樣做:

int lastPlayer = match.currentPlayer - 1; 

    if (lastPlayer == 0) 
     lastPlayer = match.numberOfPlayers; 

我的問題是如何在一個更清潔的方式寫這篇文章。我知道遊戲中心,基於代碼做類似:

(currentIndex + 1) % match.participants.count]; 

我該如何重寫我的代碼做同樣的事情?

在此先感謝

+1

確實從零開始計數? – 2012-08-15 09:05:06

+0

該球員來自1 - x – BlackMouse 2012-08-15 09:08:43

+0

可能更好的問這個http://codereview.stackexchange.com/ – Abizern 2012-08-15 09:28:03

回答

3

那怎麼樣?

int lastPlayer = match.currentPlayer > 1 ? match.currentPlayer - 1 : match.numberOfPlayers; 
1

如果你有一個這樣的轉計數器:

for(int i=0;i< maxTurns;i++){//do something} 

和PLAYER1扮演的第一個轉彎,player2第二等, 您可以獲得當前玩家人數完全按照其完成遊戲中心。

也許你不知道模「%」操作符, 它返回一個部門的其餘部分,例如

3%2 = 1 

您turncounter保持計數所以未來玩家

(turncounter + 1)%match.numberOfPlayer 

在這種情況下,模數運算符類型會在您的計數器達到最大玩家數(第6輪並且有5位玩家6%5 = 1)時「重置」您的計數器。

概括起來講,currentPlayer是turncounter%match.numberOfPlayer

nextPlayer是++turncounter%match.numberOfPlayer