数当てゲームを作る2-入力と判定

前回、乱数で作った適当な数を変数に記憶できるようにしたので、今回はその変数の値を当てる数当てゲームの本体を作りましょう。まず、キーボードから数字を入力しその数が正解か、また正解より小さいか大きいか判定する処理になりますね。

キーボードから数字を入力するには、INPUTという命令を使います。この命令は、

INPUT 文字列, 変数名

とすると、文字列を表示しキーボードから数字が入力されるのを待ちます。そして、数字が入力されるとその値を変数に格納します。たとえば

INPUT "Bの値を入力:", B

という文を実行してみましょう。「Bの値を入力」という文字列が表示され、入力待ちの状態になりましたね。ここで、適当な数字を入れてリターンキーを押してみてください。続いて

PRINT B

として、Bの値を確認してみましょう。先ほど入れた値になっているはずです。

次に、変数の値がある数より大きいか、あるいは小さいか判定する処理ですが、これにはIF文を使います。IF文は、

IF 条件 THEN 処理

という書き方で、もし「条件」が満たされれば、「処理」の部分が実行されます。たとえば、「変数Bの値が10より小さければ、B<10と表示する」という処理は以下のように書けます。

IF B < 10 THEN PRINT "B<10"

まず、B = 5などの文を実行し、Bに10以下の値を代入してこの文を実行してみてください。文字列が表示されましたね。次に、B = 11などとしてから再度実行してみましょう。今度は、何も表示されないはずです。
「Bが10より小さい」という比較を行う「<」は、比較演算子などと呼ばれ、このような条件の指定に使う比較演算子には、以下のようなものがあります。

A < BAはBより小さい
A > BAはBより大きい
A = BAとBは等しい
A <> BAとBは等しくない

「<>」以外は普通に使われている記号なので、それほど違和感はないでしょう。INPUTとIFを使うと、「最初に乱数で変数Xに値を代入。続いて、キーボードから変数Aに数字を入力し、そのAと変数Xの大小を比べ、表示する」プログラムは以下のように書けます(最初に結果を見やすくするためにCLSで画面全体をクリアしています)。

10 CLS
20 RANDOMIZE
30 X = RND(100)
40 INPUT "0-99の数を入れてください:", A
50 IF A < X THEN PRINT "正解より小さい数です"
60 IF A > X THEN PRINT "正解より大きい数です"

このプログラムを実行して、適当な数字を入れ結果を表示させてみましょう。そして、PRINT Xを実行してXの実際の値を表示し、結果が正しいか確認してみてください(A=Xの時は、何も表示されません)。

ただ、このプログラムだと、一度Aの値を入力して大小関係が表示されただけで終わってしまうので、ゲームにはなりませんね。ゲームとして成立させるためには、AとXが等しくなければ、またAの値を入力するところに戻って同じ処理をAに正解が入れられるまで続ける必要があります。つまり、「もしAとXが等しくなければ、行番号40に戻る」必要があるわけです。
このような「指定の行番号に飛ぶ」のに使うのがGOTO文です。「GOTO 行番号」とすると、指定の行番号に移動することができます。このGOTOとIF文を組み合わせると、「AとXの値が等しくなければ、行番号40に飛ぶ」処理は、以下のようになります。

70 IF A <> X THEN GOTO 40

これで、AとXが等しくなければ、行番号40に飛び、等しければ次の行が実行されるようになりました。次の行が実行される、つまりA=Xとなるのは、正解が入力された時ですので、次の行では「正解です」というメッセージを表示して終了することにしましょう。
以上のことから、「数当てゲーム」のプログラム全体は、以下のようになります。

 10 CLS
 20 RANDOMIZE
 30 X = RND(100)
 40 INPUT "0-99の数を入れてください:", A
 50 IF A < X THEN PRINT "正解より小さい数です"
 60 IF A > X THEN PRINT "正解より大きい数です"
 70 IF A <> X THEN GOTO 40
 80 PRINT "正解です"

入力したら、早速RUNで実行してみましょう。適当な数を入力して行って、メッセージをもとに正解の数を探し出してください。

一通り動かしてみたら、せっかく作ったプログラムですので、ディスクに保存しておきましょうか。プログラムを保存するには、SAVE命令を使います。たとえば

SAVE "d:\num.bas"
という文を実行すると、Dドライブのルートディレクトリにnum.basというファイル名でプログラムが保存され、次に99BASICを起動した時にLOADという命令で

LOAD "d:\num.bas"

とすれば、保存しておいたプログラムを読み込んで使うことができます。d:\num.basというファイル名の部分は、皆さんの環境に合わせて適当に書き換えてください。

戻る