LoginSignup
7
4

More than 5 years have passed since last update.

PHPでズンドコ節をする₍₍(ง˘ω˘)ว⁾⁾

Posted at

やること

  • ズン」「ドコ」をひとつずつ出力
  • ズンズンズンズンドコ」が出力されたタイミングで「キヨシ₍₍(ง˘ω˘)ว⁾⁾
  • 「キヨシ₍₍(ง˘ω˘)ว⁾⁾」コールができなかったら「ズンドコできませんでした...」と出力

やったこと

下記コードのとおりですが、一応..。

  • 「ズン」「ドコ」をそれぞれ扱うために配列にイン
  • 「ズン」「ドコ」の文字列を格納するための変数を初期化
  • ループ準備
  • 配列から「ズン」「ドコ」をランダムで出力するために、配列用の添字をrandom_int()で出力
  • 文字格納用の変数に「ズン」「ドコ」を連結格納
  • 「ズン」「ドコ」を出力
  • 条件分岐 - 連結格納された変数内に「ズンズンズンズンドコ」があれば「キヨシ₍₍(ง˘ω˘)ว⁾⁾」コールの後、ループから抜ける
  • ループ終了 - ズンドコできませんでした...。

書いたコード

<?php

$arrs = ['ズン', 'ドコ'];

$zundoko_arrs = null;
for($j=0; $j<=20; $j++) { // ズンドコチャンスは4回
    $random = random_int(0, count($arrs)-1);
    $random_zundoko = $arrs[$random];

    $zundoko_arrs .= $random_zundoko;
    echo $random_zundoko . "\n";

    // ここからズンドコ
    if(strpos($zundoko_arrs, 'ズンズンズンズンドコ') !== false) {
        echo 'キヨシ!₍₍(ง˘ω˘)ว⁾⁾';
        break;
    }
}

// ループがまわり終わったのにズンドコが発動できなかった
if(strpos($zundoko_arrs, 'ズンズンズンズンドコ') === false) {
    echo 'ズンドコできませんでした...';
}

※コードと実行結果はこっちでも見れます。(paiza.ioのページが開きます)
https://paiza.io/projects/aW6NgnfrYCfFYdJwBL4wMQ

コード中で強引さを感じるところ

条件分岐中、strpos()で「ズンズンズンズンドコ」を直に指定している部分です。。
これが、『「ズン」が4回 + 「ドコ」が1回』並んだら、みたいな条件分岐の書き方じゃないと良くないだろうな...(なんでかは言葉にできないんですが、、)と思っています。

参考

rubyでユニバーサルズンドコキヨシ
array_randやshuffleの乱択精度を改善しよう
PHP: random_int - Manual

₍₍(ง˘ω˘)ว⁾⁾

環境 - PHP7を使用

7
4
0

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
7
4