Visual C# 2017 入門
23.算数ドリルを作ろう その8
今回は [ 算数ドリルを作ろう その7 ] の続きです。
これから沢山のゲームを作りたいと思っているなら、ネタ帳を作るといいです。
面白い(楽しそう)と思ったことをネタ帳に書きましょう。
そして時々・・・
昔に書いたネタを読み返してみるのです。「あれ?面白くないぞ」と思ったなら
何を面白いと思って書いたものなのか考えてみましょう。
これは「面白さ」を客観的に考察する訓練になります。
ラジオボタンの名前を変更しよう
ラジオボタン(コントロール)の名前を変更します。
配置したラジオボタンは radioButton1 から radioButton5 までの名前が
自動で付いています。
このままではプログラムするとき、どれだか分かりません。
区別しやすいように名前を変更しましょう。
足し算 RBtasu 、引き算 RBhiku
10 問 RB10、20 問 RB20、30 問 RB30
手順は目的のコントロールをクリックしてプロパティを開き、(name) の項目を
変更していきます。
足し算から順番に作業しましょう。
ラジオボタンで出題数を変えてみよう
ラジオボタンの Checked プロパティを調べて、出題数を変更します。
出題数は、変数 mondaiMax の値を変更します。
次のようにメソッド StartBtn_Click を変更してください。
これで Checked プロパティが True のものに対し、if 文の中の処理が行われます。
出題数だけでグループ化されたラジオボタンは、かならず1つだけ True となるので3つの if 文のうち1つだけ実行されます。
それでは正常に動くかテストします。
しかし、このままテストすると最低でも 60 回の入力が必要です。
これでは大変なので、出題数を一桁ずつ減らしてテストします。
計6回の入力でテストできました。
正常に動いているのを確認したら、出題数を元に戻しておきましょう。
計算タイプを増やそう
足し算の他に、引き算の問題も作れるようにします。
変数 type は足し算か、引き算かを判別するために用意します。
変数 typeStr は、演算記号+と-の表示切り替えに使います。
開始ボタンが押されたときに呼ばれる StartBtn_Click の中で、
計算タイプを格納しています。
あとは問題の作成時に、足し算と引き算の切り替えをするだけです。
実行して、引き算を選択したとき正常に動くか確認しましょう。
マイナスが入力できない
引き算ができるようになりました。
ちゃんとテストしてみましたか?
バグ(不具合)がありましたね。
そうです。答えにマイナス記号(-)が入力できないのです。
数値およびバックスペースのみ受け付けていた処理に、マイナスも入力できるように変更します。
マイナス記号ではないとき、という判断文を追加します。(ややこしいですね)
実行して確認してみましょう。
これでマイナスも入力できます。
しかし、ここでまたも問題が発生しました。
マイナスを2つ以上入力するとエラーになります。
複数のマイナスを入力できないように変更します。
実行してみましょう。
マイナスは1つしか入力できないようになりました。
少し複雑になったので、マイナスを1つまでとする処理はこのまま覚えてもいいでしょう。
知りたい人のために説明すると
InBox.TextLength で入力された文字数を調べ、1回目のマイナスだけは
入力を無効にしないようにしています。
if ( ! (e.KeyChar == ‘-’ && InBox.TextLength == 0) )
(入力された文字がマイナス、かつ、1回目の入力のとき)
このカッコに!をつけて否定してます。!を忘れないようにしてください。
注意が必要なのは、TextLength の値です。
1回目の入力では0、2回目の入力で1となります。
この動作は前に説明しました。気になる人は
次のページの KeyPress イベントのところを読み返してみましょう。
[ 17.算数ドリルを作ろう その2 ]
これで完成です。
と言いたい所ですが、実行してマイナスのみ入力して Enter キーを押してみて下さい。
エラーがでました。
空打ち問題( 何も入力しない )と似たエラーです。
マイナスだけ入力して確定すると、マイナスが文字列として判断されてエラーに
なるのです。
ここは空打ちのときと同じように
入力されたものがマイナスだけの時は除外するように変更します。
これで完成です。
40 行目が長くなってしまったので2行にしました。カッコの位置に注意してください。
入力処理は難しいですね。
もっと簡単にできる方法を知っている方は教えてください。
改造してプログラミングスキルを身に付けよう
お疲れさまでした。
簡単なサンプルのつもりだったのですが、説明に8ページも使ってしまいました。
次からは少しシンプルな説明にします。
さて、プログラミングは自分で考えることをしないと身に付きません。
ということで改造してみましょう。
本当は改造する内容も自分で考えたほうがいいのですが
とりあえず用意してみました・・・
・正解数だけでなく、正解率も表示する
・現在、何問目の問題なのか表示する
・開始から終了までのタイムを表示する
・プレイ中、開始ボタンをリセットボタンに変更する
・計算タイプに掛け算を追加する
などなど、挑戦してみましょう。