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

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

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

Visual Basic 2019 入門

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

 

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

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

 

 

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

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

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

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

 

ラジオボタンの名前を変更する

 

 

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

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

 

出題数を変更する

 

初めて Select Case 文を使いました。
出題数だけでグループ化されたラジオボタンは、かならず1つだけ True となります。
これで Checked プロパティが True のもののみ、次の行が実行されます。

なお、If Then 文で書いた場合、次のようになります。
好きな方でプログラミングしましょう。

if文で出題数を変更する

 

 

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

出題数を変更してテストする

 

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

 

しかし、表示が崩れてますね。
正解数のあと改行コードが入っていないためバグってます。
サブルーチン Seiseki の中の表示に改行コードを追加します。

適切な所に改行コードを追加する

 

 

計算タイプを増やそう

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

 

引き算タイプを追加する

 

 

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

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

引き算をテストする

 

 

マイナスが入力できない

引き算ができるようになりました。
ちゃんとテストしてみましたか?
バグ(不具合)がありましたね。
そうです。答えにマイナス記号(-)が入力できないのです。

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

 

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

 

 

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

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

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

 

 

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

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

 

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

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

If Not (e.KeyChar = ‘-’c And InBox.TextLength = 0) Then

(入力された文字がマイナス、かつ、1回目の入力のとき)
このカッコに Not をつけて否定してます。

注意が必要なのは TextLength の値です。
1回目の入力では0、2回目の入力で1となります。
この動作は前に説明しました。気になる人は
下のページの KeyPress イベントのところを読み返してみましょう。

算数ドリルを作ろう その2 ]

 

 

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

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

マイナスだけの入力は除外する

 

これで完成です。

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

 

 

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

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

 

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

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

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