0

在回合制游戏中,我想找到以前的玩家。要找到下一个玩家,我可以输入:

int lastPlayer = match.currentPlayer - 1;

问题是当currentPlayer是player 1的时候,那么lastPlayer变成了0,这是错误的。应该是player6。

为了解决这个问题,我可以这样做:

    int lastPlayer = match.currentPlayer - 1;

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

我的问题是如何以更简洁的方式编写它。我知道游戏中心,基于回合的代码可以执行以下操作:

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

我怎样才能重写我的代码来做同样的事情?

提前致谢

4

2 回答 2

3

那个怎么样?

int lastPlayer = match.currentPlayer > 1 ? match.currentPlayer - 1 : match.numberOfPlayers;
于 2012-08-15T09:25:47.800 回答
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

于 2012-08-15T09:30:31.883 回答