关于eclipse:你如何随机化Java字符串?

How do you randomize Java strings?

所以我开始编写一个小游戏,需要'enemys'从两点产生。

继承我的敌人产卵代码;

1
2
3
4
5
public void createEnemy(int enemy_count){
    for(int i = 0; i < enemy_count; i++){
        addEntity(new Enemy((200), -10, tex, this, game));
    }
}

你可以看到'(新的敌人((200)'是一个敌人会产生的点。另一个是450。

那么我如何在敌人每次被杀时产生的这两点之间交替?

********************编辑

1
2
3
4
5
// For respawn enemy
    if(y > (Game.HEIGHT * Game.SCALE)){
        x = 450;
        y = -10;
    }

好吧,我非常肯定我必须随机化它以及它的工作?想法? (x需要随机450或200)。

谢谢,
马克斯


如果要在每次其他迭代中交替使用200到450之间的值:

1
addEntity(new Enemy((i % 2 == 1 ? 200 : 450), -10, tex, this, game));

这使用模运算符%来确定循环计数器i是奇数还是偶数,并使用三元运算符选择200或450。

如果你想伪随机地选择一个或另一个,你可以使用Math.Random(),因为@Chrisky在注释中阐述:

1
addEntity(new Enemy((Math.Random() > 0.5 ? 200 : 450), -10, tex, this, game));

编辑:您可以将相同的模式应用于您添加到问题中的第二个代码块。

1
2
3
4
if (y > (Game.HEIGHT * Game.SCALE)) {
    x = (Math.Random() > 0.5 ? 200 : 450);
    y = -10;
}


如果你希望怪物每次都在一个随机的未确定位置产生,你应该生成一个随机值,在你的情况下你只有两个随机点,所以你想要0或1。

创建随机数(0或1)后,检查随机数的值,然后将其转换为250或400.这可以使用关联数组完成,或者(更简单)if else语句。

看到:

生成1到10个Java之间的随机数

此外,你应该知道没有真正随机的东西。有些人坚持称它为伪随机但我觉得有点迂腐。


随机选择一个位置:

1
2
Random random = new Random(); // Somewhere at the top of your code
addEntity(new Enemy((random.nextBoolean() ? 200 : 450), -10, tex, this, game));

交替位置,不依赖于循环计数器变量。如果你在循环之外产生敌人,这也很有用。 (例如,其他类型的敌人的其他循环。)

1
2
bool flag = false; // Somewhere at the top of your method for spawning enemies.
addEntity(new Enemy((flag = !flag ? 200 : 450), -10, tex, this, game));