VisualBasic 2017 入門
15.ハイ&ローゲームを作ろう その8
今回は [ ハイ&ローゲームを作ろう その7 ] の続きです。
ハイ&ローゲームの説明は今回で終了です。
リセットボタンを付けよう
前回までの制作でゲームの処理は完成しました。
しかし、実行して1回しか遊べないのではツマラナイですね。
そこでリセットボタンを付けて、何度でも遊べるようにしましょう。
まずはボタンを複製します。
LOW ボタンをクリックし、コピーと貼り付け(ペースト)で複製します。
今回はショートカットキーを使ってやってみます。
3つ目のボタンができました。とても簡単ですね。
次はボタンの表示を変えます。
「 LOW 」になっているのを「 リセット 」にしましょう。
Text プロパティを変更します。
ついでにボタンの位置を移動して3つのボタンを並べます。
リセット処理を入れよう
リセットボタンを押したときに呼ばれるサブルーチンが必要です。
リセットボタンをダブルクリックして作ります。
複製して作ったボタンの名前は Button3 なので Button3_Click というサブルーチンが追加されます。
Button3_Click の中にリセット処理を入れるわけですが、どんなプログラムを書けばいいのでしょうか?
実はすでにリセットする処理を書いています。
そうです。Form1_Load の中にある起動時の初期処理がリセットの役目をします。
これと同じものを Button3_Click の中にも書けばいいのです。
しかし、待って下さい。
同じ処理を複数の場所に書くのはよくありません。
バグ(不具合)の原因にもなります。
ということで、初期処理を行う専用のサブルーチンを別に作ります。
Button3_Click の下にサブルーチン init を用意しました。
init という名前は用意されたものではなく、私が勝手に付けた名前です。
この中に初期処理をコピーします。
これで初期処理を行うサブルーチンが用意できました。
あとはこれを Form1_Load および Button3_Click の中から呼び出します。
サブルーチンの呼び出しは簡単です。init () を書くだけです。
Form1_Load 内の初期処理は消してしまいましょう。
実行してみましょう。
適当に HIGH か LOW を押した後で、リセットを押して下さい。
メッセージが初期状態に戻れば成功です。
ボタンを押せないようにしよう
現状では HIGH を押したあとに LOW を押すことができます。
つまり、必ず当たりを出すことができる訳です。
これではゲームとしてダメですね。
対策として HIGH か LOW を押すと、両方のボタンを押せないようにします。
つまり、Button1_Click と Button2_Click の中にボタンを無効化する処理を入れます。
ボタンを無効化するには Enabled プロパティを使います。
使い方は簡単で、有効(True)または、無効(False)を代入するだけです。
今回は無効にしたいので False を入れます。
これで1回のみ押せるようになりました。
ただ、このままではリセットボタンを押しても無効のままなので続けて遊べません。
リセットするタイミングで有効に戻す必要があります。
初期処理の中にボタンを有効(True)に戻す処理をいれます。
これでリセットしたあと、また遊べるようになります。
では実行してみましょう。
HIGH か LOW を押してボタンが無効になり、リセットで有効に戻れば成功です。
改造してみよう
これにて「ハイ&ローゲームを作ろう」は終了です。
お疲れさまでした。
長い説明になってしまいましたが、ここまで学習してもプログラミングのスキルが身に付かず、やめてしまう人をよく見ます。
別の言い方をすれば、入門書を一冊読んでもプログラミングできるように
ならない人たちを見かけます。
このパターンの原因は「 説明内容を記憶しているだけ 」というものです。
必要なのは「 プログラミングをする思考ができる脳 」なのであって、
これは記憶しただけではあまり育たないのです。
では思考できる脳を育てるにはどうするのか?
答えは簡単です。実際にプログラミングすればいいのです。
ただ、自分で課題を考えて何かをプログラミングするのは大変なことです。
( 作りたいものがある人は別ですが )
ということで、まずは改造することをおすすめします。
今回のゲームを使って次の改造をしてみて下さい。
・HIGH または LOW を押すまでリセットボタンを無効にする
・HIGH または LOW を押したらリセットボタンを有効にする
・当たりとはずれの回数をそれぞれ表示する
・連続当たり回数を表示する
・連続当たり回数のハイスコアを表示する
・1から19までをランダムに発生させ、10より大きいか小さいかを当てさせる
この他にも思いついたら、どんどん改造していきましょう。