0

我正在使用一种方法(如下所示),该方法允许我输入玩家数量以及每个玩家的名称。有没有办法让我使用这个数组来决定谁是活跃玩家?(回合制猜谜游戏)。如果你能指出我正确的方向。

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;
          }
      }
 }
4

5 回答 5

2

你应该看看我关于更改玩家号码的问题。我认为这正是您正在寻找的东西(或类似的东西):Java:更改玩家编号

本质上,我使用了一个布尔数组来跟踪谁还在玩,其中数组索引对应于玩家编号 a[0] = 玩家 0,a[1] = 玩家 1 等。如果玩家被淘汰,则标记相应的索引带假: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;
}

如果您对我的代码等有任何疑问,请告诉我。

于 2013-01-07T05:45:20.877 回答
0

在我看来,你有两种不同的选择。

  1. 创建一个 Player 对象,实例变量作为他的名字和一个表明他是否处于活动状态的布尔值。
  2. 您可以创建一个布尔数组,该数组与玩家数组同步,说明玩家是否处于活动状态。

前 2

boolean[] activeStatus= new boolean[1];
String[] players = new String[1];
activeStatus[0]=true;
players[0]="Joe Smith";
于 2013-01-07T04:14:54.267 回答
0

好吧,要表示当前玩家,您可以使用 int

int curplayer = 0;

每次他们的回合结束时,您都可以添加一个以获得下一个玩家的索引。

curplayer++;

至于在最后一个玩家之后返回第一个玩家,我建议您查看 % (模数)运算符。

于 2013-01-07T04:14:55.903 回答
0

使用实例变量跟踪轮数:

private int turn;

每回合增加一次:

turn++;

轮到的玩家的指数可以通过使用回合除以玩家数量的余数来计算:

int playerIndex = turn % playersAmount;

我留给您将这些部分处理到您的代码中。

于 2013-01-07T04:17:22.187 回答
0

我的 java 有点生疏了,但类似下面的东西应该可以工作。

i = 0
while (playing == True)
{
    player = playerList[i]
    i = (i + 1) % playerList.length

    [Do something]
}
于 2013-01-07T04:17:56.057 回答