如何随机更新2D阵列中的选定元素



所以我试图分配一个名为lesserConstraint的变量,它被分配给1。我有一个四乘四的数组,它打印所有的0,我希望我的代码在四乘四中随机选择一个0,并将其替换为lesserConstraint变量。有线索吗?

因此,这种方法生成四乘四阵列:

public static void setup(int dungeon[][]){
int lesserMonster = 2;
int drangon = 1;
//makes the dungeon.
for(int i = 0; i < dungeon.length; i++){
for(int j = 0; j < dungeon[i].length; j++){
dungeon[i][j] = 0;
}
}
pDungeon(dungeon);
}

pDungeon数组打印出来:

public static void pDungeon(int dungeon[][]){
for(int i = 0; i < dungeon.length; i++){
for(int j = 0; j < dungeon.length; j++){
System.out.print(dungeon[i][j] + " ");
}
System.out.println();
}
}

这是一个javascript解决方案,但应该为您提供基本的想法;

const arrayRows = 4;
const arrayCols = 4;
const row = Math.floor(Math.random() * arrayRows);
const col = Math.floor(Math.random() * arrayCols);
dungeon[col][row] = lesserMonster;

您可以随机选择一行和一列来放置您的怪物,例如:

int row = ThreadLocalRandom.current().nextInt(dungeon.length);
int column = ThreadLocalRandom.current().nextInt(dungeon[row].length);
dungeon[row][column] = lesserMonster;

此外,我建议将lesserMonsterdragon设置为类的静态最终字段,以便您可以从其他方法访问它们。在你的pDungeon方法中,最好在j上使用与setup方法相同的循环:

for (int j = 0; j < dungeon[i].length; j++)

现在你有j < dungeon.length,它假设地牢是方形的。

最新更新