【学習】WinFormsで乱数を使ってみよう(サイコロアプリ)

広告

これまでの学習では、

  • ボタンを押す
  • 決まった値が表示される

という形でプログラムを動かしてきました。

しかし、ゲームやアプリにはもう一つの仕組みがあります。

毎回違う値が出る

という仕組みです。これが乱数です。

今回は C# の Random クラスを使って、ボタンを押すたびに 1〜6 の数字がランダムに表示されるサイコロアプリを作ります。

今日作るもの

振る ボタンを押すと

3

のように 1〜6 の数字がランダムに表示されます。

何度押しても毎回違う数字が出ます。


ソリューションとプロジェクトを作る

Visual Studio で新しいプロジェクトを作ります。

  • テンプレート: Windows Forms アプリ (.NET Framework)
  • ソリューション名: RandomSample
  • プロジェクト名: Dice

作成すると Form1 が表示されます。


フォームに配置するコントロール

フォームに次の2つを配置します。

コントロール名前
LabelresultLabel
ButtonrollButton

Label には最初「?」や「0」を表示しておくと分かりやすいです。


Randomクラスとは

C# では Random クラスで乱数を扱います。

Random rnd = new Random();
int num = rnd.Next(1, 7);  // 1以上7未満 = 1〜6

Next(1, 7) は1以上7未満の整数を返します。つまり 1, 2, 3, 4, 5, 6 のいずれかです。


ボタンのイベントを登録する

rollButton をダブルクリックすると rollButton_Click イベントが作成されます。

ここに乱数を表示する処理を書きます。


完成コード

using System;
using System.Windows.Forms;

namespace RandomSample
{
    public partial class Form1 : Form
    {
        Random rnd = new Random();

        public Form1()
        {
            InitializeComponent();
        }

        private void rollButton_Click(object sender, EventArgs e)
        {
            // 1〜6 の乱数を取得
            int num = rnd.Next(1, 7);

            // Label に表示
            resultLabel.Text = num.ToString();
        }
    }
}

プログラムの流れ

振るボタンを押す
        ↓
rnd.Next(1, 7) で 1〜6 の乱数を取得
        ↓
resultLabel に表示

重要ポイント

Random の Next(最小値, 最大値) は「最大値未満」 です。

  • Next(1, 7) → 1, 2, 3, 4, 5, 6(7は含まれない)
  • サイコロは 1〜6 なので、Next(1, 7) が正解です

乱数を使うと、

  • ゲームのダメージ
  • くじ引き
  • ランダムな選択

など、毎回違う動きが作れます。


発展アイデア

Random を使うと次のようなものも作れます。

  • 当たりくじ(当たり / はずれ)
  • じゃんけん(グー / チョキ / パー)
  • スロット風の数字表示
  • 簡単な RPG のダメージ計算

乱数はゲームの基本の一つです。

訪問数 1 回, 今日の訪問数 1回

広告