ゼロからはじめてみる日本語プログラミング「なでしこ」 (6) 数当てゲームを作ってみよう

ゼロからはじめてみる日本語プログラミング「なでしこ」 (6) 数当てゲームを作ってみよう

画像提供:マイナビニュース

日本語でプログラミングできる「なでしこ」を使って、プログラミングを身につけましょう。プログラミングができれば、いろいろな仕事を自動化することができます。前回、「尋ねる」命令を利用して、単位変換ツールを作成しました。今回は、同じく「尋ねる」命令を利用して、世界で最も簡単なコンピューターゲーム「数当てゲーム」を作ってみましょう。

○数当てゲームを作ろう

数当てゲームというのは、コンピュータがランダムに決めた数値を、ゲームのプレイヤーが当てるという古典的なゲームです。「サイコロの目を当てるゲーム」と言えば分かりやすいでしょうか。

# --- 1から3のどれかの数字を決める --- (※1)
正解 = 乱数(3) + 1
# --- プレイヤーに尋ねる --- (※2)
「1から3のどれかな?」と尋ねる。
入力値 = INT(それ)
# --- 正解か判定する --- (※3)
もし、正解=入力値ならば
  「当たり★ 正解は{正解}です!」と表示。
違えば
  「はずれ。正解は{正解}でした。」と表示。
ここまで。

今回も、なでしこ3のWebエディタからプログラムを手軽に実行させることができます。

プログラムを実行すると、ダイアログに質問とテキストボックスが表示されるので、値を入力して[OK]ボタンを押すと、ゲームの結果が表示されます。確率は、1/3です。果たして、何度目で正解することができるでしょうか。

ゲームを遊んでみたら、プログラムを確認してみましょう。

プログラムの(※1)では、1から3の適当な数字を決めています。なでしこで、サイコロのように毎回違う数を生成するには「乱数(数値)」という関数を利用します。

例えば、以下のプログラムを実行すると、実行するたびに、毎回違った数字が10個表示されます。

10回、乱数(5)を表示。

このとき、乱数(5)のように書くと、0から4までのランダムな(でたらめな)値を生成します。もし、乱数(100)と書くなら、0から99までのランダムな値を生成します。

ところで、どんな難しい計算でも、毎回、間違いなく正確に計算するコンピュータが、毎回違った値を表示するというのは、なんだか面白く感じませんか。意外に感じるかもしれませんが、毎回異なる値というのは、計算によって算出しているんです。でたらめな数字を求める計算式があるというのは、ちょっと面白いですね。

プログラムの(※2)の部分では、ユーザーから入力を得ます。そして、INT(値)関数を利用して、入力した値を整数に変換します。

そして、プログラムの(※3)の部分では、「もし」構文を利用して、ゲームの結果を表示します。これは、プレイヤーが入力した値と、コンピュータが決めた正解が一致しているかどうかを調べます。それを行うのが「もし」構文です。これは、次のような書式で利用します。

[書式]
もし、(比較式)ならば
 # ここに比較式が真の(正しい)ときの処理
違えば
 # ここに比較式が偽の(間違ってい)ときの処理
ここまで。

「もし」構文を使うと、これまで上から下に順に実行していたプログラムを、比較式に応じて、処理を分岐することができます。

そして、比較式に指定できるのは、次のような不等号です。

○数当てゲーム - ヒントを表示するように

次に、もう少し高度な数当てゲームを作ってみましょう。今度は、1から100までのいずれかの数字を当てるというゲームにしてみます。ただし、何のヒントもなしに、数を当てるのは大変です。そこで、はずれの場合、正解値と入力値を比較して、大きいか小さいかというヒントを表示するようにしてみましょう。

# --- 数字を決める ---
正解 = 乱数(100) + 1
入力値 = 0
# --- 繰り返し尋ねる ---
試行回数 = 1
(正解 ≠ 入力値)の間、ここから
  「1から100のどれかな?」と尋ねる。
  入力値 = INT(それ)
  もし、正解=入力値ならば
    「当たり★」と言う。
  違えば
    試行回数 = 試行回数 + 1
    もし、正解>入力値ならば
     「はずれ。 もっと大きな値です」と言う。
    違えば
     「はずれ。もっと小さな値です」と言う。
    ここまで。
  ここまで。
ここまで。
「{試行回数}回目で当たりました。」と表示。

なでしこ3のエディタで実行して試してみましょう。

1から100までの数を当てると言うと大変に感じますが、はずれた場合も、大きいか小さいかのヒントが表示されるので、数回チャレンジすることで、数を言い当てることができるでしょう。

ゲームで遊んだら、プログラムを確認してみましょう。今回は、「(比較式)の間」構文を使って、繰り返しプログラムを実行しています。この構文は、以下のように利用します。

[書式]
(比較式)の間、ここから
  # ここに繰り返したい処理
ここまで

この構文は、比較式が真の間、繰り返しプログラムを繰り返し実行します。これは、以下の図のような動作となります。

プログラムのその他の部分は、「もし」構文を利用して、当たりかはずれかを判定したり、入力値と正解のどちらが大きいかを判断しています。

○まとめ

以上、今回は、数当てゲームを作ってみました。このように、ゲームを作るには、分岐や繰り返しなど、プログラミングの構文を覚える必要があります。そのため、プログラミングを楽しんで覚えるのに役立ちます。「もし」構文、「(比較式)の間」構文など、プログラミングには、よく出てくるものです。しっかり覚えておきましょう。

自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2005年IPAスーパークリエイター認定、2010年 OSS貢献者章受賞。技術書も多く執筆している。
(クジラ飛行机)