すごろくゲームをつくろう②

 この連載
(れんさい)
では、Ruby(ルビー)というプログラミング言語を使って、本格的
(ほんかくてき)
なプログラミングに挑戦
(ちょうせん)
しているよ。

 さて、前回は、サイコロを
って、サイコロの目の数だけマスを進んでゴールを目指
めざ
すというすごろくゲームをつくったよ。ちゃんとゴールにたどり着けたかな? 今回は、それにおもしろいギミック(しかけ)を追加してみよう!

1 前回のおさらい

 まず前回学んだことのおさらいをしておこう。すごろくゲームのプログラムでは、「変数
へんすう
式展開
しきてんかい
」を使った。「式展開」とは、文字列の中で変数などを扱いたい時に使うよ。書式は次のようになるね。

 変数や式の部分を「#{  }」で囲む

 ただし、式展開を使うときには次の注意が必要だったね。

単なる文字列の表示:
「’ (シングルクォート)」「” (ダブルクォート)」どちらでもOK
式展開を含んでいる文字列:
「” (ダブルクォート)」のみ

 この式展開は前回のすごろくゲームでのポイントだったね。思い出せたかな。

2 追加するギミック(しかけ)を考えよう

 基本のプログラムでは、サイコロの出た目だけ進むので、すぐにゴールにたどり着いてしまう。もっとゲームをおもしろくするために、あらかじめ決めたマス目に達したら、進んだり戻ったりするギミック(しかけ)を考えてみよう。例えば、次のようなギミックをプログラムに追加していくよ。

【追加するギミック】
 1マス目では2進む
 5マス目では2戻る
 10マス目では最初に戻る
 15マス目では7戻る

すごろくゲームの例
今回つくるすごろくゲームのイメージ

3 プログラムをしよう

 前回つくった「sugoroku1.rb」をエディター(TeraPad)で開く。名前を「sugoroku2.rb」にしていったん保存をしておくといいよ。プログラムは、次のように入力していくよ。

ギミックを追加したすごろくゲームのプログラム

 それでは、プログラムの内容を説明していこう。
 9行目から14行目までは、前回のすごろくゲームのプログラムそのままだ。

 19行目から40行目までのギミックの部分を見て欲しい。ここは、case~ when~ end 構文で、前回解説したif~  elsif~ else~ end文のように、いくつも条件分岐
じょうけんぶんき
(条件を満たすかどうかによって処理
しょり
を変える)する構文
こうぶん
だ。case文の場合は、条件の
あたい
がはっきりしている場合に便利な構文で、ここでは、変数me に代入されている何番目のマス目に進んだかという値を条件としているよ。

case 変数名
when 値1 
  値1と一致する場合に行う処理
when 値2
 値2と一致する場合に行う処理
when 値3 
 値3と一致する場合に行う処理
else 
 どの値にも一致しない場合に行う処理
end

 そこで、20行目はme の値が1の場合、21行目から23行目を実行、25行目はme の値が5の場合、26行目から28行目を実行、となるよ。

 マス1では21行目でメッセージを表示して、22行目で変数me に2を加えている。マス5では27行目で変数me から2を引いている。マス10では32行目で変数me の値を0、すなわち最初に戻している、ということだよ。

 23、28、33、38行目では同じmes(me) というメソッドを読んでいるけど、これは4行目から7行目でこのプログラムだけに使われる特別な「メソッドを定義
ていぎ
」している部分だ。
 メソッドを定義する場合は、次のような構文をつくるよ。

def  メソッド名
         処理するコード
end

 ここでは、前回つくったすごろくゲームのプログラムでも使ったマス目の表示をしているね。もしもこのメソッドをつくっておかないと、各ギミックの中でこの同じコードを何回も書くことになるからめんどうだし、ゴチャゴチャしてくるよね。
 このように、メソッドは同じ処理の
り返しをかんたんにしたり、処理を目的別に分けたりする場合にとても便利なやり方なんだ。

 さて、このプログラムで注意が必要なのが16行目のif 文だ。これは例えば18マス目にいて、サイコロの目が3以上出ると、20のマスを超えてしまい、mes メソッドを実行する段階
だんかい
でエラーが出てしまう。そのような段階
だんかい

けるために入れているよ。

 また、プログラムの書き方で、ところどころに# で始まるコメント文を入れているね。これも以前勉強したけれど、後からプログラムを見たときに、どのような処理をしているかをわかりやすくする工夫だ。

 さらにこのプログラムは、while分の中にif 文があって、その中にcase 文があるという「

構造
こうぞう
」になっている。一見複雑
ふくざつ
に見えるけど、どこが区切りとなっているかを見極
みきわ
めるとわかりやすくなるんだ。そのため、前に説明したしたインデントや40、41、42行目のend のコメントなども活用してね。

 プログラムが完成したら、さっそく実行してみよう。コマンドプロンプトを開いて、「ruby sugoroku2.rb」と入力すればよかったね。次のような表示がでたかな(一部表示)。

すごろくゲームの実行結果(一部表示)

 何回サイコロを振ったらゴールできたかな? すごろくゲームで楽しんだら、今回つくったプログラムを参考にして、ギミックを追加してみるなど、プログラムの改造にもチャレンジしてみてね!

(文/株式会社まちづくり三鷹 野口英一郎、竹下麻由)

最新号好評発売中!

子供の科学 2021年 5月号

CTR IMG