我使用我创建的这个方法随机创建不同的精灵,使用andEngine添加到我的场景中。
Random randItem = new Random();
face = null;
float x = rand.nextInt((int) mCamera.getWidth() - mBallTextureRegion.getHeight());
int ItemNumber = randFruit.nextInt(6) + 1;
if(ItemNumber == 1){
face = new Sprite(x,0, this.mBallTextureRegion);
}else if(ItemNumber == 2){
face = new Sprite(x,0,this.strawberryTextureRegion);
}else if(ItemNumber == 3){
face = new Sprite(x,0,this.grapeTextureRegion);
}else if(ItemNumber == 4){
face = new Sprite(x,0, this.watermelonRegion);
}else if(ItemNumber == 5){
face = new Sprite(x,0, this.cherryRegion);
}else if(ItemNumber == 6){
Sprite poison = new Sprite(x,0,this.poisionRegion);
}
我正在做的是随机生成数字1 - 6.并且每次测试以查看生成的数字,然后根据numbER添加正确的精灵。
所以问题是......因为这是使用AndEngine的游戏项目。我想随机生成随机生成但不像上面精灵那样经常生成的奖励项目。这应该只发生在每100个精灵中添加一次。
还有更好的方法吗?就像为此目的而创建的一个类?
还是我走在正确的轨道上?任何帮助都会非常感激!
答案 0 :(得分:2)
你应该使用switch
语句而不是嵌套if-statements
来检查你想要的项目。
如果你想要的话,你可以实现每隔x
百分比删除其他随机生成项目的机会,而不是在其上放置一个硬计数器(例如每100个),考虑这样的事情:
int itemNumber = randFruit.nextInt(6) + 1;
switch(itemNumber) {
case 1:
//Item 1 code
break;
case 2:
//Item 2 code
break;
//etc. . .
}
//Generate random number from 1 - 100
int randomItem = (int)(Math.Random()*100);
if (randomItem >= 90 && <= 100) {
//Generate your item
}