我正在上大学的第一门编程课程,我的问题如下:
我有一个 Player 对象的 ArrayList 具有以下属性:
name: String;
area: int;
numberofdices: int;
对于每个玩家,Area
初始化为 8,NumberOfDices
初始化为 24。
我想将这些玩家传递给一个二维数组。因此,例如,如果有 3 个玩家,我希望数组看起来像这样:
[
[name: 1, area: 8, numberofdices: 3],
[name: 2, area: 8, numberofdices: 2],
[name: 3, area: 8, numberofdices: 8]
]
本质上,我希望所有玩家的区域都为 8,并且我想在区域之间随机划分 NumberOfDices。 (最少 1,最多 8)
尝试了以下方法,但没有奏效:
public static void random_board(ArrayList<Players> listofplayers,Players[][] gameboard) {
do {
for(int row = 0;row < gameboard.length;row++) {
for(int column = 0;column < gameboard[row].length;column++) {
// System.out.println(gameboard[row][column]);
if(gameboard[row][column] == null) {
Iterator<Players> it = listofplayers.iterator();
while (it.hasNext()) {
Players i = it.next();
Random r = new Random();
int number = r.nextInt(8) + 1;
if (i instanceof Players) {
if (((Players) i).numberofdices - number >= 1 && ((Players i).area > 1) {
gameboard[row][column] = new Players(((Players) i).name, 1, number);
((Players) i).setnumberofdices(((Players) i).getnumberofdices() - number);
((Players) i).setarea(i.getarea()-1);
if ( ((Players)i).getarea() == 1 ) {
gameboard[row][column] = new Players(((Players)i).name,((Players)i).area,((Players)i).numberofdices);
it.remove();
}
}
} else if (i instanceof Enemies) {
if (((Enemies) i).numberofdices - number >= 1 && ((Enemies) i).area > 1) {
gameboard[row][column] = new Enemies(((Enemies) i).name, 1, number,((Enemies)i).getAttacking_mood());
((Enemies) i).setnumberofdices(((Enemies) i).getnumberofdices() - number);
((Enemies) i).setarea(i.getarea()-1);
if ( ((Enemies)i).getarea() == 1 ) {
gameboard[row][column] = new Enemies(((Enemies)i).name,((Enemies)i).area,((Enemies)i).numberofdices,((Enemies)i).getAttacking_mood());
it.remove();
}
}
}
}
}
}
}
} while (!listofplayers.isEmpty());
我有一个 Enemies
类继承自 Players
类并包含另一个成员变量:attacking_mood
。
我认为它会进入一个无限循环。
答案 0 :(得分:1)
do{} while (!listofplayers.isEmpty()); this Loop will run infinite if listofplayers doesn't become empty