【发布时间】:2014-03-15 18:01:24
【问题描述】:
所以我在做这个游戏,我想随机掉落物品,这是我以前做的
if(Math.random() > 0.5) //%50% 几率
{//代码在这里 }
这种方法的问题是我会不断地向游戏中添加越来越多的物品,所以我想创建更动态的方式,因为每次添加物品时我都需要重新输入整个功能......不仅要添加一个 if-else 语句,而且我需要更改所有 if 语句中的所有机会(总和应该是 100)
有什么想法吗?
【问题讨论】:
所以我在做这个游戏,我想随机掉落物品,这是我以前做的
if(Math.random() > 0.5) //%50% 几率
{//代码在这里 }
这种方法的问题是我会不断地向游戏中添加越来越多的物品,所以我想创建更动态的方式,因为每次添加物品时我都需要重新输入整个功能......不仅要添加一个 if-else 语句,而且我需要更改所有 if 语句中的所有机会(总和应该是 100)
有什么想法吗?
【问题讨论】:
如果我正确理解了您的问题,那么您正在尝试将大量项目添加到数组中,并可能稍后将其删除。也许尝试编写一个名为“randomDrop”的函数,该函数接受包含项目的数组、可能被丢弃的项目的索引以及丢弃它的概率。
例如,在伪代码中,
define randomDrop(myItems, itemIndex, dropProbability) {
if ( Math.random() < dropProbability ) {
myItems.remove(itemIndex);
}
}
然后你可以在任何需要的地方调用这个函数。
【讨论】:
您可以使用第一个随机数来确定物品是否掉落,使用第二个随机数来确定掉落的价值。
// Drop occurred
if(Math.random() > 0.5)
{
var secondRandom = Math.Random();
//something super valuable
if(secondRandom > 0.95)
{ ... }
//something less valuable
else if(secondRandom > 0.50)
{ ... }
//least valuable
else
{ ... }
}
【讨论】: