【问题标题】:Draw a random variable from a list?从列表中绘制随机变量?
【发布时间】:2012-07-14 22:51:49
【问题描述】:

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

我现在要做的是列出我希望商店可能出售的每件商品,然后为商店将出售的每个位置随机挑选一件商品。例如,在最小的城市规模,商店出售两种武器。它会从武器列表中随机选择两把武器展示给玩家。我一直在使用包含作为一种简单的方法来存储这样的“列表”,所以我真正需要做的就是找到一种方法让游戏从包含提供的列表中随机选择 x 数量的项目并将其存储在数组中的变量。

如果您能够如此随机挑选物品,则奖励积分永远不会是相同的物品。 (比如如果我们选择两个项目并且项目是“铁剑”、“钢剑”和“龙剑”之类的,它永远不会说“铁剑”和“铁剑”)

到目前为止,这是我的代码摘录。

决定要显示的项目数。 (显示“铁剑”的地方是变量将被存储的地方。这些是被扔进去的虚拟物品。)

$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>";
}

提前一百万次感谢您

【问题讨论】:

  • $indexes = array_rand($array, $items_amount)

标签: php arrays list variables random


【解决方案1】:

使用shuffle 来随机化数组顺序怎么样?

【讨论】:

  • 嗯......这个想法会非常有效,但是,如果数组存储在会话中,那仍然有效吗?
  • 当然,这有什么区别? shuffle($_SESSION['ShopWeapons'])
【解决方案2】:

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

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

DisplayStoreHtml()

【讨论】:

  • weapon = NextWeapon()
猜你喜欢
  • 2022-01-09
  • 1970-01-01
  • 2016-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-11
  • 2013-11-08
  • 1970-01-01
相关资源
最近更新 更多