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

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

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

Small Basic 入門

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

 

前回作った「数当てゲーム」よりも少しレベルを上げたプログラムに挑戦します。
ちょうどいいレベルのゲームが思い付かなかったので、算数ドリルを作ります。

 

穴埋めタイプの問題

普通の算数ドリルを作ってもツマラナイので、穴埋めタイプのドリルにします。

穴埋めタイプの問題を作成する

足し算を10問出題します。
?=の後に答えを入力してもらい、毎回、正解か×を表示します。
最後には正解数も表示しますよ。

こんな感じで、少し実践的なプログラムになります。

 

 

カーソル位置を意識しよう

表示の基本となる部分を作っていきます。
問題は10問なので、For 文で仮表示(位置取りなどをみるために代用品を使う)します。

 

basic で算数ドリルを作る

説明文と問題が続けて表示されています。
1行空けた方が見た目が美しいですね。
知っている命令だけで空白行を作ってみます。

 

空白行を作る方法

TextWindow.WriteLine() のダブルコーテーションの中に何も記述しなければ
改行だけ行われます
結果として空白行ができる訳ですが、5行の空白を作りたい時など
WriteLine() を5回も繰り返し書くのはバカらしいです。

 

 

メッセージを適切な位置へ表示したい時は、TextWindow.CursorTop を使います。
これは現在のカーソル行を取得したり、カーソル行を指定することが可能です。

カーソルの位置を制御する命令

トマト 0 と表示されてます。
コンピュータは0から数を数え始めるパターンが多いです
最上段は0行目ということを現しています。
いちごは0から数えて2行目ですね。

メロンに注目してください。
メロンを表示する前に CursorTop = 10 を実行しています。
このときカーソルは10行目に移動した訳です。
結果として10行目にメロンが表示されています。

 

では、CursorTop を使って1行空白を作る方法です。

カーソル行を指定する方法

4行目のように現在の行を取得して、1を足してあげれば良いのです。
5を足せば5行の空白を作れます。

 

 

乱数で問題を作成しよう

ドリルの問題を作ります。
実行するたび問題が変わるように乱数 Math.GetRandomNumber() を使います。
乱数の範囲は1から9までとします。

 

足し算ドリルの問題を作成

乱数は前回も使っているので、難しい所はないと思います。

 

 

穴埋めの場所を乱数で決めよう

穴埋めする場所を乱数で決めます。
A + B = C
という計算式であれば、穴埋めの対象は ABC の3箇所です。
1から3までの乱数を作り、条件文を使って問題の表示内容を変更します。

 

計算の穴埋めをする場所を乱数で決める

実行するたびに問題の内容も、穴埋めの場所(?の位置)も変わります。

 

 

上記のプログラムでは IF 文を3つ使って判断していますが、少し違う書き方もあります。

if elseif else の使い方

16行目で ElseIf を使っています。
1つ前の If の条件に合わなかった時、ElseIf の条件判断が行われます。
18行目の Else は、上の2つの条件に当てはまらない時に実行されます。

今回はこちらのプログラムで進めます。

 

 

IF と Else について

先ほどのプログラムでは Else の恩恵が分かり辛いので、違うサンプルを用意しました。

 

if else の使い方

10回乱数を発生させて7の時だけ大吉を表示するプログラムです。
Else を使えば、7とそれ以外の処理が簡単に書けます。

先ほど使用した ElseIf は、それ以外の中から条件を絞り込むのに適しています。
状況に合わせて使い分けましょう。