所以我开始编写一个小游戏,需要'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)。
谢谢, 最大
答案 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
另外,你应该知道那里没有真正随意的东西。有些人坚持称它为伪随机但我觉得有点迂腐。