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

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

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

Small Basic 入門

10.穴埋め算数ドリルを作ろう その2

 

[ 穴埋め算数ドリルを作ろう ] の続きです。

 

 

答えの入力処理を作ろう

答えを入力する処理を作ります。
問題のあとに ?= と表示して、ユーザーからの入力待ちにします。
?=は「?に入る数を入力してください」という意味合いで表示します。
次のような感じです。

答えを入力する所

 

それでは、今までに覚えた命令を使って答えの入力処理を作ってみます。

答えを入力処理を作る

結果を見ると、?=入力箇所も改行されてしまいます。
理由としては WriteLine() を使うと必ず改行されるからです。

 

 

改行したくないときは TextWindow.Write() を使います。
改行させない部分を書き換えてみましょう。

改行したくないときはtextwindow.write()を使う

改行せず、それぞれ1行で表示されました。

WriteLine( ) 改行される
Write( ) 改行されない

状況に合わせて使い分けましょう。

 

 

しかし、問題と?=が続けて表示されているので見苦しいですね。
この部分を直します。
TextWindow.CursorLeft を使ってカラムを調整します。

表示位置カラムを設定する

これで問題と?=が離れて表示されました。

 

 

表示位置を指定する方法

先ほど使用した TextWindow.CursorLeft の別サンプルを見てください。

テキストの表示位置を自由に設定する

CursorLeft に1を代入すれば、カーソル位置は左から1つ移動します。
代入した数だけ移動します。
カーソル位置からテキストは表示されるので、このような結果になります。

 

以前に使用した TextWindow.CursorTop と TextWindow.CursorLeft を使えば、好きな位置に表示できますね。

CursorTopとCursorLeftの関係

 

 

正解、不正解の表示をしよう

答えの入力の後に、正解と不正解(×)の表示をします。
次のような感じになります。

正解の表示をする

 

入力した数が正解かどうか判定するには、?の内容が必要になります。
?の数を変数 ans に退避します。

比較対象の値を変数に退避しておく

 

変数 ans と答えの入力値 input を使い、答え合わせをします。

答え合わせの部分を作る

答え合わせができましたね。

 

しかし、正解が改行されています。
その理由は ReadNumber() を使って入力させたからです。
改行することは回避できません。

でも、簡単に対処できます。カーソルを1行上に戻せばいいのです。
TextWindow.CursorTop の出番です。
1行戻すには -1するだけです。

カーソル行を1つ上に戻す

これで改行されず(実際には改行されたものを戻している)に表示されました。

 

次は正解を緑色、×を赤色で表示します。

正解、不正解を色分けする

色の指定方法は簡単ですね。
それぞれの表示の前に green か red を指定すればいいのです。

1つ気を付ける点は、40行目の gray の指定です。
この指定を忘れると問題の部分が緑色や赤色になってしまいます。
この行を一度コメントにして実行してみれば分かると思います。