我正在编写一种在每个玩家轮到后切换玩家编号的方法。我正在使用一个布尔数组来跟踪仍在玩的玩家(尚未被淘汰)。所以游戏开始时的数组被初始化为true,是游戏中玩家人数的大小。当玩家被淘汰时,索引的相应值被设置为 false(例如,如果玩家 2 被淘汰,数组的第三个索引被设置为 false)。(注意:玩家 0 确实存在,所以如果有两个玩家在玩,他们是玩家 0 和玩家 1。)如果玩家编号等于最后一个玩家,那么它需要从头开始,找到第一个玩家还在游戏中。否则,玩家编号会增加到第一个仍在玩的玩家。这是我所拥有的:
public static int switchPlayer(int currentPlayer, boolean[] playerList) {
if(currentPlayer == playerList.length) {
for(int i = 0; i < playerList.length; i++) {
if(playerList[i] == true) {
currentPlayer = i;
break;
}
}
}
else {
for(int i = (currentPlayer+1); i < playerList.length; i++) {
if(playerList[i] == true) {
currentPlayer = i;
break;
}
}
}
return currentPlayer;
}
有什么改变或建议吗?它不太工作,看不到哪里出了问题。
我试图实现其中一个答案,但我不知道如何实现它。有没有人有办法解决吗?