Как представить диапазоны в то время как оценки? - PullRequest
0 голосов
/ 15 октября 2019

Я пишу небольшую игру для развлечения, в которой используется система действий для нескольких товарищей по команде. Я не знаю, как представить диапазон всех членов 0-9 в массиве в цикле while.

Я знаю, что есть способ сделать closedOpen, но я не знаю, как это будетвписывается в код.

int[2][10][0] hea //Using two teams, each with 10 members, who have multiple traits
// ^ I know this isn't perfect syntax 

while (hea[0][0-9][0]!=0){ // Tests for if at least one member of team has actions
    Actions
}
// Is there a way to represent the middle step in the array without typing out all and statements

Ответы [ 3 ]

0 голосов
/ 15 октября 2019

Как насчет цикла for?:

for (int i = 0; i < hea.length; i++) {
    int[][] team = hea[i];
    for (int member = 0; member < team.length; member++) {
        int[] traits = team[member];
        //Check actions
    }
}

Говоря с точки зрения дизайна игры, я бы не стал уклоняться от использования классов для таких вещей, как:

public class Team {
    private final List<Player> players = new ArrayList<>();
    public static final int MAX_SIZE = 10;
}

public class Player {
    public String getName();
    public List<Action> getActions();
}

public class Action {
    private final int[] basic; //however you wish to implement
}

public class Game {
    private final List<Team> teams = new ArrayList<>();
    public void addPlayer(Player player);
}

Проверьте Oracle Java Tutorials для более подробного объяснения изучения Java.

0 голосов
/ 15 октября 2019

Если я не ошибаюсь по вашим намерениям, это идеальный вариант использования для for loop

Цикл for принимает значение и увеличивает (или уменьшает) его и является хорошим способом итерации. через фиксированное количество опций.

for(int i = 0; i < 9; i++) {
   if(hea[0][i][0] != 0) {
      Actions
   }
}

Это говорит: начните с i, и пройдите цикл. В конце цикла увеличьте значение i. продолжайте, пока я не достигну 9, а затем разорвите петлю.

0 голосов
/ 15 октября 2019

Один из самых прямых способов - написать (приватный) метод для выполнения проверок по всему массиву. Что-то вроде:

/** Tests if at least one member of the team has actions left */
private boolean haveActionsLeft(int [][][] hea, int team, int members) {
  for (int m = 0; m < members; m++) {
    if (hea[team][m][0] >= 0) {
      return true;
    }
  }
  return false;
}

И тогда вы можете вызвать функцию в условие вашего оператора while:

...
while (haveActionsLeft(hea, 0, 10)) {
  Actions
}
...