![]() |
||
日本語プログラミング言語「なでしこ」公式サイト |
日本語でプログラミングできる「なでしこ」を使って、プログラミングを身につけましょう。プログラミングができれば、いろいろな仕事を自動化することができます。前回、「尋ねる」命令を利用して、単位変換ツールを作成しました。今回は、同じく「尋ねる」命令を利用して、世界で最も簡単なコンピューターゲーム「数当てゲーム」を作ってみましょう。
数当てゲームを作ろう
数当てゲームというのは、コンピュータがランダムに決めた数値を、ゲームのプレイヤーが当てるという古典的なゲームです。「サイコロの目を当てるゲーム」と言えば分かりやすいでしょうか。
# --- 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)の部分では、「もし」構文を利用して、ゲームの結果を表示します。これは、プレイヤーが入力した値と、コンピュータが決めた正解が一致しているかどうかを調べます。それを行うのが「もし」構文です。これは、次のような書式で利用します。
[書式]
もし、(比較式)ならば
# ここに比較式が真の(正しい)ときの処理
違えば
# ここに比較式が偽の(間違ってい)ときの処理
ここまで。
「もし」構文を使うと、これまで上から下に順に実行していたプログラムを、比較式に応じて、処理を分岐することができます。
そして、比較式に指定できるのは、次のような不等号です。
比較式 | 意味 |
---|---|
a = b | aとbが等しいか |
a > b | aがbより大きいか |
a >= b または a ≧ b | aがb以上か |
a < b | aがbより小さいか |
a <= b または a ≦ b | aがb以下か |
a <> b または a ≠ b | aとbが異なるか |
数当てゲーム - ヒントを表示するように
次に、もう少し高度な数当てゲームを作ってみましょう。今度は、1から100までのいずれかの数字を当てるというゲームにしてみます。ただし、何のヒントもなしに、数を当てるのは大変です。そこで、はずれの場合、正解値と入力値を比較して、大きいか小さいかというヒントを表示するようにしてみましょう。
# --- 数字を決める ---
正解 = 乱数(100) + 1
入力値 = 0
# --- 繰り返し尋ねる ---
試行回数 = 1
(正解 ≠ 入力値)の間、ここから
「1から100のどれかな?」と尋ねる。
入力値 = INT(それ)
もし、正解=入力値ならば
「当たり★」と言う。
違えば
試行回数 = 試行回数 + 1
もし、正解>入力値ならば
「はずれ。 もっと大きな値です」と言う。
違えば
「はずれ。もっと小さな値です」と言う。
ここまで。
ここまで。
ここまで。
「{試行回数}回目で当たりました。」と表示。
なでしこ3のエディタで実行して試してみましょう。
1から100までの数を当てると言うと大変に感じますが、はずれた場合も、大きいか小さいかのヒントが表示されるので、数回チャレンジすることで、数を言い当てることができるでしょう。
ゲームで遊んだら、プログラムを確認してみましょう。今回は、「(比較式)の間」構文を使って、繰り返しプログラムを実行しています。この構文は、以下のように利用します。
[書式]
(比較式)の間、ここから
# ここに繰り返したい処理
ここまで
この構文は、比較式が真の間、繰り返しプログラムを繰り返し実行します。これは、以下の図のような動作となります。
プログラムのその他の部分は、「もし」構文を利用して、当たりかはずれかを判定したり、入力値と正解のどちらが大きいかを判断しています。
まとめ
以上、今回は、数当てゲームを作ってみました。このように、ゲームを作るには、分岐や繰り返しなど、プログラミングの構文を覚える必要があります。そのため、プログラミングを楽しんで覚えるのに役立ちます。「もし」構文、「(比較式)の間」構文など、プログラミングには、よく出てくるものです。しっかり覚えておきましょう。
自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2005年IPAスーパークリエイター認定、2010年 OSS貢献者章受賞。技術書も多く執筆している。