Как я могу использовать рандомизацию, чтобы указать разные параметры объекта для одной итерации в al oop? - PullRequest
1 голос
/ 19 февраля 2020

В настоящее время у меня есть простой for-l oop с 5 итерациями, который создает игровые объекты «кирпичи», добавляет их в массив «кирпичи» и размещает их по оси x моей сцены javaFX. В настоящее время, как вы можете видеть на параметры Gameobj; они все синие. Тем не менее, я хочу, чтобы один из этих блоков был выделен желтым на случайной итерации l oop. Вот мой код:

    public void initialiseGame()
    {       
        bricks = new ArrayList<>();
        for(int i=0; i<5; i++) {
            GameObj brick = new GameObj(i*100, 100, BRICK_WIDTH, BRICK_HEIGHT, Color.BLUE);
            brick.moveX(75);
            brick.visible = true;
            bricks.add(brick);
            System.out.println("Model:: Create Brick =" + brick);
        }
    }

Вот настройка метода игрового объекта:

    public GameObj( int x, int y, int w, int h, Color c )
    {
        topX   = x;       
        topY = y;
        width  = w; 
        height = h; 
        colour = c;
    }

Как именно я могу использовать какой-то рандомизатор для изменения цвета кирпича на одном итерация

Ответы [ 2 ]

2 голосов
/ 19 февраля 2020

Выберите случайное число в диапазоне [0, 5) перед l oop, а затем установите желтый цвет, если индекс l oop соответствует этому числу:

Random random = new Random();
int yellowBrick = random.nextInt(5);
for (int i = 0; i < 5; i++) {
    Color color = i == yellowBrick ? Color.YELLOW : Color.BLUE;
    GameObj brick = new GameObj(i*100, 100, BRICK_WIDTH, BRICK_HEIGHT, color);
    brick.moveX(75);
    brick.visible = true;
    bricks.add(brick);
    System.out.println("Model:: Create Brick =" + brick);
}
0 голосов
/ 19 февраля 2020

Вы можете позвонить GameObj brick = new GameObj(i*100, 100, BRICK_WIDTH, BRICK_HEIGHT, Color.BLUE);.

Например: Вы можете позвонить int random = ThreadLocalRandom.current().nextInt(0, 5) за пределами -1 oop. А затем используйте это внутри for-l oop:

if (random != i) {
  GameObj brick = new GameObj(i*100, 100, BRICK_WIDTH, BRICK_HEIGHT, Color.BLUE);
} else {
  GameObj brick = new GameObj(i*100, 100, BRICK_WIDTH, BRICK_HEIGHT, Color.YELLOW);
}

Для получения дополнительной информации о Color посетите Java ™ Platform Standard Ed. 8 Документация

Или вы можете использовать функцию Math.random () .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...