2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

第5話 道にカバンが落ちている!

Posted at

落し物は、交番まで!

太郎と次郎が、街はずれを歩いているときに、道端に大きなカバンが落ちているのを見つけました。

さあ、どうするんだ!という状況をコード化しました。

ガチャみたいに一定確率でなんか出てくる仕組みを作るために、確率表を作成します。

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

※銃刀法に反しないようにサバイバルナイフは出にくくなってます(謎)

なんだかなぁ...もっといい方法あります?

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?