Small Basic 入門
10.穴埋め算数ドリルを作ろう その2
[ 穴埋め算数ドリルを作ろう ] の続きです。
答えの入力処理を作ろう
答えを入力する処理を作ります。
問題のあとに ?= と表示して、ユーザーからの入力待ちにします。
?=は「?に入る数を入力してください」という意味合いで表示します。
次のような感じです。
それでは、今までに覚えた命令を使って答えの入力処理を作ってみます。
結果を見ると、?=も入力箇所も改行されてしまいます。
理由としては WriteLine() を使うと必ず改行されるからです。
改行したくないときは TextWindow.Write() を使います。
改行させない部分を書き換えてみましょう。
改行せず、それぞれ1行で表示されました。
WriteLine( ) | 改行される |
Write( ) | 改行されない |
状況に合わせて使い分けましょう。
しかし、問題と?=が続けて表示されているので見苦しいですね。
この部分を直します。
TextWindow.CursorLeft を使ってカラムを調整します。
これで問題と?=が離れて表示されました。
表示位置を指定する方法
先ほど使用した TextWindow.CursorLeft の別サンプルを見てください。
CursorLeft に1を代入すれば、カーソル位置は左から1つ移動します。
代入した数だけ移動します。
カーソル位置からテキストは表示されるので、このような結果になります。
以前に使用した TextWindow.CursorTop と TextWindow.CursorLeft を使えば、好きな位置に表示できますね。
正解、不正解の表示をしよう
答えの入力の後に、正解と不正解(×)の表示をします。
次のような感じになります。
入力した数が正解かどうか判定するには、?の内容が必要になります。
?の数を変数 ans に退避します。
変数 ans と答えの入力値 input を使い、答え合わせをします。
答え合わせができましたね。
しかし、正解が改行されています。
その理由は ReadNumber() を使って入力させたからです。
改行することは回避できません。
でも、簡単に対処できます。カーソルを1行上に戻せばいいのです。
TextWindow.CursorTop の出番です。
1行戻すには -1するだけです。
これで改行されず(実際には改行されたものを戻している)に表示されました。
次は正解を緑色、×を赤色で表示します。
色の指定方法は簡単ですね。
それぞれの表示の前に green か red を指定すればいいのです。
1つ気を付ける点は、40行目の gray の指定です。
この指定を忘れると問題の部分が緑色や赤色になってしまいます。
この行を一度コメントにして実行してみれば分かると思います。