все. Я работаю над небольшой игрой, в которой 2D-массив создан для размещения каждой плитки «карты» игры. Игра порождает игрока и кучу разнообразных предметов. Ячейки выглядят так:Создание случайно сгенерированных объектов в 2D-массиве
private String [][] cells;
...
public void set(int cellX, int cellY, String str)
{
cells[cellX][cellY] = str;
}
с каждой строкой, указывающей на то, что ячейка в каждом месте выглядит. Например, иногда создается стена, и иногда создаются проходы (все это считывается из файла). Итак, вопрос в следующем:
Как я могу случайным образом генерировать объекты на определенных ячейках? Например, если у меня всего 36 ячеек (6x6), но только 23 из них могут быть «перемещены» игроком, как я могу случайным образом генерировать объекты, у которых есть равная вероятность появления на каждом из них?
Код, который у меня есть до сих пор.
public void draw()
{
for (int x = 0; x < cells.length; x++)
{
for (int y = 0; y < cells[w].length; y++)
{
if(cells[x][y] == "W"){
Cell wall = new Cell(config.wallImage());
wall.draw(config, x, y);
if(cells[x][y] == "P"){
Cell passage = new CellPassage(config.passageImage());
// This is where I need to check to see if the item is okay
// to be placed. If it is unable, nothing will be added to
// the Cell passage.
//passage.attemptToAdd(item);
passage.draw(config, x, y);
}
}
}
hero.draw();
}
Я прочитал ваше описание дважды, и я все еще не уверен, что вы пытаетесь сделать, но в качестве побочной рекомендации я могу сказать точно, не делайте этого: 'if (cells [x] [y] == "W") {'. не сравнивайте строки с помощью '==' или '! =', так как это сравнивается для ** равенства объектов **, то ли два объекта ** идентичны **, и это не то, что вы хотите. Вы хотите ** функциональное равенство **, и поэтому используйте методы 'equals (...)' или 'equalsIgnoreCase (...)'. Итак, вместо этого, 'if (cells [x] [y] .equals (" W ")) {' –
Вы хотите создать лабиринт? Должен ли каждый «проход» быть доступен из любого другого «прохода»? – n0rd
Я согласен с @HovercraftFullOfEels. Кроме того, вам не хватает закрывающего '' 'перед вторым' if'. И вы не имеете в виду 'cells [x] .length' во втором' if' тоже? –