在回合制游戏中,我想找到之前的玩家。 要找到下一位玩家,我只需输入:
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];
如何重写我的代码才能做到这一点?
提前致谢
答案 0 :(得分:3)
那怎么样?
int lastPlayer = match.currentPlayer > 1 ? match.currentPlayer - 1 : match.numberOfPlayers;
答案 1 :(得分:1)
如果你有这样的转弯计数器:
for(int i=0;i< maxTurns;i++){//do something}
并且播放器1播放第一个播放器,播放器2播放第二个播放器,依此类推, 你可以像在游戏中心完成的那样获得当前的玩家数量。
也许你不知道模数“%”运算符, 它返回除法的其余部分,例如
3%2 = 1
你的回声计数器会继续计数,以便下一位玩家
(turncounter + 1)%match.numberOfPlayer
在这种情况下,当模数达到最大玩家数时,模数运算符会“重置”你的计数器(第6轮,有5名玩家6%5 = 1)。
总结一下,currentPlayer为turncounter%match.numberOfPlayer
nextPlayer是++turncounter%match.numberOfPlayer