落し物は、交番まで!
太郎と次郎が、街はずれを歩いているときに、道端に大きなカバンが落ちているのを見つけました。
さあ、どうするんだ!という状況をコード化しました。
ガチャみたいに一定確率でなんか出てくる仕組みを作るために、確率表を作成します。
init.php
$rankTable = [
[ "品質ランク" => 1, "個数" => 840 ], // 84.0%
[ "品質ランク" => 2, "個数" => 100 ], // 10.0%
[ "品質ランク" => 3, "個数" => 50 ], // 5.0%
[ "品質ランク" => 4, "個数" => 6 ], // 0.6%
[ "品質ランク" => 5, "個数" => 3 ], // 0.3%
[ "品質ランク" => 6, "個数" => 1 ], // 0.1%
];
上のコードで、個数を足すと1000になるので、1000個のくじ引きを配列で作成します。
init.php
$gacha = [];
foreach($rankTable as $rank) {
for ($loop = 0; $loop < $rank["個数"]; $loop++) {
$gacha[] = $rank["品質ランク"];
}
}
shuffle($gacha); // これいらないかもw
このくじ引きを適当に引けばいいわけで、
gacha.php
echo "太郎は、カバンが落ちているのを見つけた。<br>";
echo "そっと開いてみる...<br>";
switch ($gacha[mt_rand(0, count($gacha)-1)]) {
case 1: $treasure = "<font color=gray>折れた枝</font>"; break;
case 2: $treasure = "<font color=green>竹ぼうき</font>"; break;
case 3: $treasure = "<font color=green>錆びたノコギリ</font>"; break;
case 4: $treasure = "<font color=blue>きれいな竹刀</font>"; break;
case 5: $treasure = "<font color=blue>金属バット</font>"; break;
case 6: $treasure = "<font color=red>サバイバルナイフ</font>"; break;
}
echo "太郎は、" . $treasure . "を手に入れた!<br><hr>";
※銃刀法に反しないようにサバイバルナイフは出にくくなってます(謎)
なんだかなぁ...もっといい方法あります?