どうも!リョクちゃです。
今回は、メッセージボックスに表示されるボタンを選ぶことによって、
どのボタンが押されたか結果を受け取り、結果によって処理を分岐していく方法について、
メッセージボックスを使ったYes/Noゲームを例に紹介していきます。
ちなみに前回はこちら、
メッセージボックスについては、下の記事で紹介しています。
目次
準備編:フォームの作成
このようなフォームを作成します。
ちなみに筆者の環境は、
- VisualStudio2019
- Windows 10 64bit
- .Net Framework 4.5.1
です。
Yes/Noゲームについて
内容としては、いたってシンプルです。
質問に対してYesかNoで答えるのを繰り返していき、
お題が何だったのかをあてるゲームです。
Q&Aゲームとも呼ばれます。
ウミガメのスープもYes/Noゲームに位置付けられるのかな……。
これの場合は、Yes/Noの他に、関係ありませんが選択肢としてありますね。
プログラム編
メッセージボックスでYes/Noを出す
メッセージボックスでYes/Noボタンを出すには、
メッセージボックスのキーワード引数である、
buttonsにMessageBoxButtonsプロパティにあるYes/Noを選択することで、
Yes/Noボタンを表示させることができます。
ただ、buttonsだけに値を代入してもエラーとなってしまうので、
キーワード引数である、textとcaptionにも設定をしてあげます。
コードを書くと下のようになります。
1 2 3 4 5 6 7 8 |
Public Class TestYesNo Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' text引数には、メッセージボックス内に表示する文章 ' caption引数には、メッセージボックス内に表示するタイトル ' buttons引数には、メッセージボックス内に表示するボタン MessageBox.Show(text:="サンプル", caption:="Yes/Noゲーム", buttons:=MessageBoxButtons.YesNo) End Sub End Class |
Yes/Noの結果を受け取る
メッセージボックス内に表示されるボタンでどのボタンが押されたか、
結果を受け取りたい場合
DialogResultを使って戻り値を受け取る変数を宣言します。
このDialogResultは、ダイアログボックスの戻り値を返してくれる列挙型です。
コードで書くと下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Public Class TestYesNo Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' text引数には、メッセージボックス内に表示する文章 ' caption引数には、メッセージボックス内に表示するタイトル ' buttons引数には、メッセージボックス内に表示するボタン Dim result As DialogResult = MessageBox.Show(text:="サンプル", caption:="Yes/Noゲーム", buttons:=MessageBoxButtons.YesNo) If result = DialogResult.Yes Then Console.WriteLine("Yes") Else Console.WriteLine("No") End If End Sub End Class |
ここでは、result変数をDialogResultで宣言し、
結果として先ほどのメッセージボックスのYes/Noのどちらかが代入されます。
これをif文を使い、YesならConsole.WriteLine(“Yes”)と出力し、
Noなら”No”とそれぞれ出力します。
それでは、これらを参考にメッセージボックスによる簡単なYes/Noゲームを作成します。
Yes/Noゲームを作る
筆者作ってて思いました……これ対話型でやらなきゃ意味ないのに、
アプリだけで、パソコンだけで完結するYesNoゲームになってしまいました……。
操作するプレーヤーは、パソコンからくる質問に対してYesかNoで答えるだけの
一方通行なゲームになってしまいました……。
これ、作成者次第で無限に質問が続く場合があります(笑)
改めて、Yes/Noゲームの対話バージョンは作って紹介します。
今回は、メッセージボックスでのどのボタンが押されたかを受け取るやり方でも
身につけてもらえればと思います。
一方通行なYesNoゲーム!!(よいこはまねしないでね)
途中までのコードで、半ばあきらめてます。
実行例のみを表示します。
質問1
質問2
質問3
答え
まとめ
今回は、メッセージボックスにて表示されるボタン(例えば、Yes/No)でどのボタンが押されたかを受け取る方法について解説しました。
例を交えて解説したかったのですが、
今回はあまり参考にならない例を作ってしまいました。
すみません(-_-;)
次回は、対話型のYes/Noゲームを作れればと思っています。
最後までご覧いただきありがとうございます。
・こちらの書籍を参考にVB.Net勉強しています。