我的对象随机生成代码总是在每次运行代码时将武器伤害设置为相同的数字。虽然它有时会在3(匕首),4,6和8之间变化,但地图上每个项目的伤害都是一样的。我想这可能是因为当我在每个案件结束时都有回报时没有休息,但这不是“案例”。并且仍然只输出相同的损失。
所有剑损伤的示例屏幕截图为4:http://puu.sh/hevSP/7974257751.png
这不是硬编码的损坏数字,因为我添加了' random.nextInt(5)'他们每个人都是相同的数字。
最后评论的剑代码对我输入的内容设置了损害,所以我知道它是导致问题的switch语句之一。感谢。
public static Object itemRoulette(String quality, int X, int Y) {
Object returnItem = null;
//Rolls a random item based on the input quality between 1-3.
switch(quality)
{
//First tier of quality.
case "1":
{
switch (random.nextInt(5) + 1)
{
case 1: {Dagger dagger = new Dagger(); World[X][Y].treasureName = "dagger"; dagger.setDamage(2); World[X][Y].treasureName = "dagger"; returnItem = dagger; break;}
case 2: {Potion potion = new Potion(); World[X][Y].treasureName = "potion"; potion.setType("health"); returnItem = potion; break;}
case 3: {Sword sword = new Sword(); World[X][Y].treasureName = "sword"; sword.setDamage(4); returnItem = sword; break;}
case 4: {Potion potion = new Potion(); World[X][Y].treasureName = "potion"; potion.setType("health"); returnItem = potion; break;}
case 5: {Dagger dagger = new Dagger(); World[X][Y].treasureName = "dagger"; dagger.setDamage(3); returnItem = dagger; break;}
}
break;
}
//Second tier of quality
case "2":
{
switch (random.nextInt(5) + 1)
{
case 1: {Dagger dagger = new Dagger(); World[X][Y].treasureName = "dagger"; dagger.setDamage(4); returnItem = dagger; break;}
case 2: {Potion potion = new Potion(); World[X][Y].treasureName = "potion"; potion.setType("health"); returnItem = potion; break;}
case 3: {Sword sword = new Sword(); World[X][Y].treasureName = "sword"; sword.setDamage(5); sword.setDefence(1); returnItem = sword; break;}
case 4: {Potion potion = new Potion(); World[X][Y].treasureName = "potion"; potion.setType("health"); returnItem = potion; break;}
case 5: {Sword sword = new Sword(); World[X][Y].treasureName = "sword"; sword.setDamage(6); sword.setDefence(1); returnItem = sword; break;}
}
break;
}
//Third tier of quality.
case "3":
{
switch (random.nextInt(5) + 1)
{
case 1: {Sword sword = new Sword(); World[X][Y].treasureName = "sword"; sword.setDamage(6); sword.setDefence(1); returnItem = sword; break;}
case 2: {Potion potion = new Potion(); World[X][Y].treasureName = "potion"; potion.setType("health"); returnItem = potion; break;}
case 3: {Sword sword = new Sword(); World[X][Y].treasureName = "sword"; sword.setDamage(7); sword.setDefence(1); returnItem = sword; break;}
case 4: {Potion potion = new Potion(); World[X][Y].treasureName = "potion"; potion.setType("health"); returnItem = potion; break;}
case 5: {Sword sword = new Sword(); World[X][Y].treasureName = "sword"; sword.setDamage(8); sword.setDefence(2); returnItem = sword; break;}
}
break;
}
case "dagger":
{
World[X][Y].treasureName = "dagger";
Dagger dagger = new Dagger();
dagger.setDamage(3);
dagger.setDefence(0);
returnItem = dagger;
break;
}
case "sword":
{
World[X][Y].treasureName = "sword";
Sword sword = new Sword();
sword.setDamage(6);
sword.setDefence(1);
returnItem = sword;
break;
}
}
//Sword sword = new Sword(); World[X][Y].treasureName = "sword"; sword.setDamage(40); returnItem = sword;
return returnItem;
}
答案 0 :(得分:-2)
您必须定义此类并使用其随机函数,而不是调用random.nextInt
public class Numbers {
Random randnum;
public Numbers() {
randnum = new Random();
randnum.setSeed(123456789);
}
public int random(int i){
return randnum.nextInt(i);
}
}