我正在使用一种方法(如下所示),它允许我输入玩家的数量以及每个玩家的名字。有没有办法让我使用这个数组来决定谁是活跃玩家? (基于回合的猜谜游戏)。如果你能指出我正确的方向。
public class Program {
String[] playerList;
int playersAmount = 0;
public void inputPlayers() {
playersAmount = Input.readInt();
playerList= new String[playersAmount];
for (int g = 0; g < playersAmount; g++) {
String namePlayer = "player " + (g+1);
playerList [g] = namePlayer;
}
}
}
答案 0 :(得分:2)
您应该查看我有关更改玩家编号的问题。我认为这正是您正在寻找的(或类似的东西):Java: Changing Player Number
基本上我使用一个布尔数组来跟踪谁仍然在玩数组索引对应于玩家编号a [0] =玩家0,a [1] =玩家1等等。如果玩家被淘汰标记带有false的相应索引:a[i] = false;
然后您可以使用以下方法(取自我的问题)将玩家编号切换到仍在玩的下一个玩家:
public static int switchPlayer(int currentPlayer, boolean[] playerList) {
// if the current player + 1 = length (size) of array,
// start back at the beginning and find the first player still playing
if(currentPlayer + 1 == playerList.length) {
for(int i = 0; i < playerList.length; i++) {
if(playerList[i] == true) { // if player is still in the game
currentPlayer = i; // currentPlayer = current index of array
break;
}
}
}
// otherwise the current player number + 1 is not at the end of the array
// i.e. it is less than the length (size) of the array, so find the next player
// still playing
else {
for(int i = (currentPlayer+1); i < playerList.length; i++) {
if(playerList[i] == true) {
currentPlayer = i;
break;
}
}
}
return currentPlayer;
}
如果您对我的代码等有任何疑问,请与我们联系。
答案 1 :(得分:0)
我认为你有两种不同的选择。
ex for 2
boolean[] activeStatus= new boolean[1];
String[] players = new String[1];
activeStatus[0]=true;
players[0]="Joe Smith";
答案 2 :(得分:0)
好吧,为了代表当前的玩家,你可以使用int
int curplayer = 0;
每次完成他们的回合你都可以添加一个来获得下一个玩家的索引。
curplayer++;
至于在最后一个玩家之后返回第一个玩家,我建议你查看%(modulo)运算符。
答案 3 :(得分:0)
使用实例变量跟踪转弯次数:
private int turn;
每回合增加一次:
turn++;
转牌的玩家的指数可以通过使用转牌除以球员数量的余数来计算:
int playerIndex = turn % playersAmount;
我留给你将这些部分用于你的代码。
答案 4 :(得分:0)
我的java有点生疏,但下面的内容应该有效。
i = 0
while (playing == True)
{
player = playerList[i]
i = (i + 1) % playerList.length
[Do something]
}