公開中のアプリ

[Swift]確率を指定して条件分岐する

今作っている簡単なゲームアプリで確率を設定して勝敗を決めたいと思ったのでメモしておきます。

ボタンを押すとランダムに勝敗が決まるコードを書く。

まず0〜2までのランダムな整数を生成してその値が0なら「勝ち」1なら「負け」2なら「引き分け」となるとコードを書きます。
その前にLabelとButtonをstoryboardに配置してそれぞれViewController.swift と紐付けておきます。
コードはこんな感じです。

    @IBOutlet weak var result: UILabel!
    
    var random = 0
    
    @IBAction func judgment(_ sender: Any) {
        random = Int.random(in: 0...2)
        print(random)
        if random == 0 {
            result.text = "勝ち"
        } else if random == 1 {
            result.text = "負け"
        } else if random == 2 {
            result.text = "引き分け"
        }
    }

3行目で変数randomを定義し初期化しています。
5〜15行目でButtonを押した時はこの処理を実行して下さいねって言うコードを書いています。
6行目で3行目に定義した変数randomに0~2までのランダムな整数をボタンが押されるたびに代入しています。
7行目でどの数字が変数randomに代入されたか念の為print()で確認しています。
8行目から条件分岐です。
if文で変数randomの中に代入された数字が0なら「勝ち」1なら「負け」2なら「引き分け」となるようLabelに表示させています。

ちょっと見にくいですがButtonを押すたびにLabelの文字が切り替わっているのがわかると思います。
確認の為に右下のデバッグエリアを見ると数字が表示されて0なら「勝ち」1なら「負け」2なら「引き分け」となっていると思います。

勝敗に確率を設定する

次は勝敗の確率を設定します。
今回は60%勝ち、30%負け、10%引き分けの割合に設定します。
その前に先ほど書いたコードを一度コメントアウトしておきましょう。

先ほどはランダムな整数を0〜2で取得していましたが、今回は0〜99(100個)のランダムな整数を取得します。
勝ちが60%なので0〜59の間だと「勝ち」、負けが30%なので60〜89の間だと「負け」、引き分けが残りの90〜99の間だと「引き分け」と表示されるようにします。

今回はswitch分で条件分岐します。

random = Int.random(in: 0...99)
        print(random)
        switch random {
        case 0...69:
            result.text = "勝ち"
        case 0...89:
            result.text = "負け"
        default:
            result.text = "引き分け"
        }

1行目の0…2の部分を0…99に変更します。
3行目からはswitch文で変数randomの値によって異なる処理になるよう分岐しています。
8行目のdefaultと言うのは「それ以外の時」と言う事で今回は90〜99の場合「引き分け」となります。

もっと簡単な方法がありそう・・・あったら教えて欲しいです!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

アプリ