【連載】

ゼロからはじめてみる日本語プログラミング「なでしこ」

6 数当てゲームを作ってみよう

6/12

日本語プログラミング言語「なでしこ」公式サイト

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

数当てゲームを作ろう

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

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

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

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

1から3のいずれかの数字を入力します

入力すると結果を表示します

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

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

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

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

0から4までの乱数を10個表示するプログラム

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

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

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

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

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

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

「もし」構文を使うと処理を分岐できる

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

比較式意味
a = baとbが等しいか
a > baがbより大きいか
a >= b または a ≧ baがb以上か
a < baがbより小さいか
a <= b または a ≦ baがb以下か
a <> b または a ≠ baとbが異なるか

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

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

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

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

はずれた場合、ヒントを表示します

当たった場合、何回で正解したかを表示します

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

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

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

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

「(比較式)の間」構文の動作

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

まとめ

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

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

6/12

インデックス

連載目次
第12回 文字数カウントツールを作ってみよう
第11回 日本語で肥満判定ツールを作ってみよう
第10回 日本語プログラミングでビンゴマシンを作ってみよう
第9回 6行でオリンピックまであと何日?
第8回 日本語プログラミングで年齢早見表
第7回 なでしことExcelで9月始まりのカレンダーを作ろう
第6回 数当てゲームを作ってみよう
第5回 単位変換ツールを作ってみよう
第4回 タートルグラフィックスでお絵かきしよう(その2)
第3回 タートルグラフィックスでお絵かきしよう(その1)
第2回 プログラミングにおける変数の役割について
第1回 日本語プログラミング言語「なでしこ」を始めよう

もっと見る



人気記事

一覧

イチオシ記事

新着記事