初心者のためのゲームプログラミング入門

プログラミングとゲームの杜

初心者のためのプログラミング入門 & ゲームプログラムの作り方入門

VisualBasic 2017 入門

23.算数ドリルを作ろう その8

 

今回は [ 算数ドリルを作ろう その7 ] の続きです。

これから沢山のゲームを作りたいと思っているなら、ネタ帳を作るといいです。
面白い(楽しそう)と思ったことをネタ帳に書きましょう。
そして時々・・・
昔に書いたネタを読み返してみるのです。「あれ?面白くないぞ」と思ったなら
何を面白いと思って書いたものなのか考えてみましょう。
これは「面白さ」を客観的に考察する訓練になります。

 

 

ラジオボタンの名前を変更しよう

ラジオボタン(コントロール)の名前を変更します。
配置したラジオボタンは RadioButton1 から RadioButton5 までの名前が
自動で付いています。
このままではプログラムするとき、どれだか分かりません。
区別しやすいように名前を変更しましょう。

足し算 RBtasu 、引き算 RBhiku
10 問 RB10、20 問 RB20、30 問 RB30

手順は目的のコントロールをクリックしてプロパティを開き、(name) の項目を
変更していきます。
足し算から順番に作業しましょう。

 

vb ラジオボタンコントロールの名前を変更する

 

 

ラジオボタンで出題数を変えてみよう

ラジオボタンの Checked プロパティを調べて、出題数を変更します。
出題数は、変数 mondaiMax の値を変更します。
次のようにサブルーチン StartBtn_Click を変更してください。

 

vb select case の使い方

 

初めて Select Case 文を使いました。
これで Checked プロパティが True のものに対し、次の行が実行されます。
If Then 文で書いた場合、次のようなプログラムになります。
どちらも同じなので好きな方でプログラミングしましょう。

 

vb select case と if then の比較

 

 

それでは正常に動くかテストします。
しかし、このままテストすると最低でも 60 回の入力が必要です。
これでは大変なので、出題数を一桁減らしてテストします。

 

テストする為にプログラムを変更する

 

計6回の入力でテストできました。
正常に動いているのを確認したら、出題数を元に戻しておきましょう。

 

 

計算タイプを増やそう

足し算の他に、引き算の問題も作れるようにします。
変数 type は足し算か、引き算かを判別するために用意します。
変数 typeStr は、演算記号の表示切り替えに使います。

 

vb 入門 分かりやすい

 

 

開始ボタンが押されたときに呼ばれる StartBtn_Click の中で、
計算タイプを格納しています。
あとは問題の作成時に、足し算と引き算の切り替えをするだけです。

実行して、引き算を選択したとき正常に動くか確認しましょう。

 

足し算と引き算のプログラム

 

 

マイナスが入力できない

引き算ができるようになりました。
ですが、バグ(不具合)があります。気付きましたか?
そうです。答えにマイナス記号(-)が入力できないのです。

数値およびバックスペースのみ受け付けていた処理に、マイナスも入力できるように変更します。
マイナス記号でないとき、という判断文を追加します。(ややこしいですね)

 

vb マイナスの入力もできるようにする

 

 

実行して確認してみましょう。
これでマイナスも入力できます。

しかし、ここでまたも問題が発生しました。
マイナスを2つ以上入力するとエラーになります。

 

マイナスを複数入力するとエラーになる

 

 

マイナスを複数入力できないように変更します。

 

マイナスを複数入力できないように変更する

 

実行してみましょう。
マイナスは1つしか入力できないようになりました。

少し複雑になったので、マイナスを1つまでとする処理はこのまま覚えてもいいでしょう。
知りたい人のために説明すると
InBox.TextLength で入力された文字数を調べ、1回目のマイナスだけは
入力を無効にしないようにしています。

注意が必要なのは、TextLength の値です。
1回目の入力では0、2回目の入力で1となります。

 

 

これで完成です。
と言いたい所ですが、実行してマイナスを入力して Enter キーを押してみて下さい。またしてもエラーがでました。

空打ち問題( 何も入力しない )と似たエラーです。
マイナスだけで入力を確定すると、マイナスが文字列として判断されてエラーに
なるのです。
ここは空打ちのときと同じように
入力されたものがマイナスだけの時は除外するように変更します。

 

マイナスが文字列として判断されてエラーになる

 

これで完成です。

入力処理は難しいですね。
もっと簡単にできる方法を知っている方は教えてください。

 

 

改造してプログラミングスキルを身に付けよう

お疲れさまでした。
簡単なサンプルのつもりだったのですが、8ページも使ってしまいました。
次からは少しシンプルな説明にします。

 

さて、プログラミングは自分で考えることをしないと身に付きません。
ということで改造してみましょう。
本当は改造する内容も自分で考えたほうがいいのですが
私からの提案は次の通り・・・

・正解数だけでなく、正解率も表示する
・現在、何問目の問題なのかラベルに表示する
・開始から終了までのタイムを表示する
・プレイ中、開始ボタンをリセットボタンに変更する
・計算タイプに掛け算を追加する

などなど、挑戦してみましょう。