你如何随机化Java字符串?

时间:2014-04-16 21:01:02

标签: java eclipse

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

继承我的敌人产卵代码;

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

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

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

******************** EDIT

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

好吧我非常肯定我必须将它随机化以便它起作用吗?想法? (x需要随机450或200)。

谢谢, 最大

3 个答案:

答案 0 :(得分:1)

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

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

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

如果你想伪随机地选择其中一个,你可以使用Math.Random()代替@Chrisky在评论中阐述:

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

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

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

答案 1 :(得分:0)

随机选择一个位置:

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

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

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

答案 2 :(得分:0)

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

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

请参阅:

Generating a Random Number between 1 and 10 Java

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