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

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

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

Small Basic 入門

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

 

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

 

答えの入力処理を作ろう

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

答えの入力処理を作る

 

 

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

テキスト表示には改行する表示方法としない方法がある

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

 

 

改行したくない場合は TextWindow.Write() を使います。
問題を表示していた部分を書き換えてみましょう。

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

改行していないですね。

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

このようになっています。状況に合わせて使い分けて下さい。

 

 

ただ、問題の部分と?=がくっ付いて表示されているので見苦しいですね。
この部分を直します。
TextWindow.CursorLeft を使ってカラムを設定する方法で調整します。

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

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

 

 

表示位置を指定する方法

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

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

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

 

これで以前に使用した TextWindow.CursorTop
今回の TextWindow.CursorLeft を使えば画面の好きな位置に表示できることになります。

指定した位置にテキストを表示する方法

 

 

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

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

正解の表示をする

 

 

入力した数が正解かどうか判定するには、?の数が何か知らなくてはなりません
?の数を変数 ans に退避します。

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

穴埋めする場所を決めている所で?の値を ans に代入すればいいです。

 

 

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

答え合わせの部分を作る

答え合わせが行われるようになりました。
しかし、正解が改行されています。
TextWindow.CursorTop を使って何とかしましょう。

 

改行された理由は ReadNumber() を使って入力させたからです。
改行されてしまうことは回避できないので、カーソルを1行上に戻す処理を入れます。
現在のカーソル行を戻すには -1すればいいのです。

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

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

 

 

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

文字の色を変更する方法

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

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