从列表中绘制一个随机变量


Draw a random variable from a list?

所以我用PHP制作这个RPG游戏,以此来更多地熟悉这种语言。到目前为止,我已经建立了一个相当好的系统。现在我正在店里工作。我做了它,所以它根据城市(村庄、城镇、城市等)的大小,通过使用数组来存储变量,在每个类别中选择一定数量的商品(武器、盔甲等)。这真是太棒了。

我现在想做的是列出我希望商店潜在销售的每一件商品,然后为商店将要销售的每个时段随机挑选一件。例如,在最小的城市规模,商店出售两种武器。它将从武器列表中随机选择两件武器来显示玩家。我一直在使用includes作为一种简单的方式来存储这样的"列表",所以我真正需要做的就是为游戏找到一种方法,从include提供的列表中随机选择x个项目,并将其存储在数组中的变量中。

如果你能做到随机挑选物品从来都不是同一件物品,那么就可以获得额外的积分。(就像我们挑选了两件物品,而这些物品是"铁剑"、"钢剑"answers"龙剑"之类的,它永远不会说"铁剑和"铁剑")

以下是我迄今为止的代码摘录。

决定要显示的项目数。(显示"铁剑"的地方是变量的存储位置。这些是投掷的虚拟物品。)

$Weapons = 2 * $citysize;
$Armor = 2 * $citysize;
$Misc = $citysize;
include 'weapons.php';
if ($Weapons == 2){
    $_SESSION['ShopWeapons'][0] = "Iron Sword";
    $_SESSION['ShopWeapons'][1] = "Everwood Staff";
} elseif ($Weapons == 4){
    $_SESSION['ShopWeapons'][0] = "Iron Sword";
    $_SESSION['ShopWeapons'][1] = "Everwood Staff";
    $_SESSION['ShopWeapons'][2] = "Steel Sword";
    $_SESSION['ShopWeapons'][3] = "Balsa Wand";
} elseif ($Weapons == 6){
    $_SESSION['ShopWeapons'][0] = "Iron Sword";
    $_SESSION['ShopWeapons'][1] = "Everwood Staff";
    $_SESSION['ShopWeapons'][2] = "Steel Sword";
    $_SESSION['ShopWeapons'][3] = "Balsa Wand";
    $_SESSION['ShopWeapons'][4] = "Steel Dagger";
    $_SESSION['ShopWeapons'][5] = "Balsa Bow";
}

显示商店中的商品

echo $_SESSION['ShopWeapons'][0] . "<br>";
echo $_SESSION['ShopWeapons'][1] . "<br>";
if(($_SESSION["citysize"] == "town") || ($_SESSION["citysize"] == "city")){
    echo $_SESSION['ShopWeapons'][2] . "<br>";
    echo $_SESSION['ShopWeapons'][3] . "<br>";
}
if($_SESSION["citysize"] == "city"){
    echo $_SESSION['ShopWeapons'][4] . "<br>";
    echo $_SESSION['ShopWeapons'][5] . "<br>";
}

提前一百万次感谢

这很容易。当你在显示之前从武器阵列中选择一个随机项目时,将其从阵列中移除。这样,当你去挑选另一件随机武器时,就不能选择了。

while NumberItems < MaxItems
    weapon = NextWeapon()
    RemoveWeapon( weapon )
    AddWeaponToStore( weapon )
    NumberItems++
DisplayStoreHtml()

使用shuffle随机化数组顺序如何?