首页 > 解决方案 > 如何使用随机化为循环中的单个迭代指定不同的对象参数?

问题描述

我目前有一个简单的 for 循环,其中包含 5 次迭代,可创建“砖”游戏对象,将它们添加到“砖”数组中,并将它们布置在我的 javaFX 场景的 x 轴上。目前,正如您在 Gameobj 参数上看到的那样;它们都是蓝色的。但是,我希望在循环的随机迭代中将其中一个砖块设置为黄色。这是我的代码:

    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;
    }

我怎样才能使用某种随机化器在一次迭代中改变砖块的颜色?

标签: javajavafx

解决方案


在循环之前的范围内选择一个随机数,[0, 5)如果循环索引与该数字匹配,则将颜色设置为黄色:

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);
}

推荐阅读