熊でもわかるRGSS講座 超初級編

<<前の章へ  第6章 条件分岐で状況に合わせた処理を  次の章へ>>





 さて、今日は、条件分岐についてじゃ。
 うん。
 条件分岐は、その名のとおり、条件によって処理を分岐させるための仕組みじゃ。これが出来んと、ゲームを作ることは出来ん。
 そんなに、重要なん?
 重要じゃとも。ゲームと言うのは、映画のように一方向だけに進んでいくものではないじゃろ? プレイヤーのプレイの仕方に合わせて、状況が変化していくものじゃ。
 うん・・・。
 と言うことは、状況の変化に合わせて処理が出来なければ、ゲームにはならんのじゃ。
 なるほどな。
 そして、それを実現するのが、条件分岐というわけじゃ。
 よっしゃ、ほな早速教えてんか。
 よし、では、例によって、スクリプトエディタを開いて、セクション『Main』を表示するんじゃ。
 開いたで。
 では、下記のように書いてみろ。

7
8
9
10
11
12
begin
  n = 1               # 準備のために変数に数値を代入
  
if n == 1           # 条件分岐の開始と条件の指定
    p
"nは、1だよ"  # 条件に当てはまったとき実行される処理
  
end                  # 条件分岐の終わり


 まず、8行目じゃが、n = 1 は分かるな。nという変数に1を代入しておる。
 うん。
 次に9行目じゃが、if が条件分岐の始まりを表す。
 そして、その右に書いてあるのが条件じゃ。n == 1という部分じゃな。
 これは、nが1と同じかどうか比較して、同じなら条件に当てはまったと判断するんじゃ。
 ええと、その前の行で、nには1が入っとるから、nと1は同じってことになんの?
 そのとおりじゃ。nの値が1の場合、1 == 1ということになる。当然、1は1と同じじゃから、この場合『条件に当てはまる』ということになるのう。
 条件に当てはまった場合、10行目が実行される。
 なら、このまま実行したら、"nは、1だよ"って表示されるはずやな。よし、やってみよ。



 うん、ちゃんと出たで。
 うむ、では、こうするとどうなるかの?

7
8
9
10
11
12
begin
  n = 2               # 準備のために変数に数値を代入
  
if n == 1           # 条件分岐の開始と条件の指定
    p
"nは、1だよ"  # 条件に当てはまったとき実行される処理
  
end                  # 条件分岐の終わり


 ええと、nが2になったわけやから、nと1は同じやなくなってもうたわけやな。
 そうすると、条件が合わんから、10行目は実行されんわけやろ? ちゅうことは、結局なんも表示されへんのと違うの?
 そのとおりじゃ。このように、条件分岐は、条件に当てはまる場合と当てはまらない場合で、処理が変わるんじゃ。
 なるほどな。
 では、次はもう少し複雑にするぞい。

7
8
9
10
11
12
13
14
begin
  n = 2
  
if n == 1
    p "nは、1だよ"  # 条件に当てはまったとき実行される処理
  else
    p "nは、1じゃないよ"  # 条件に当てはまらなかったとき実行される処理
  
end


 elseいうのが出てきたな。
 うむ。elseがある場合、条件に当てはまったときには、if〜elseの間の行が実行され条件に当てはまらなかったときには、else〜endの間の行が実行されるのじゃ。  
 なるほど。
 この例の場合、nの値は2になっておるから、条件に当てはまらないわけじゃから、"nは、1じゃないよ"と表示されるはずじゃの。



 ほんまや。
 この、if〜else〜end という書き方で、条件に当てはまったときと、当てはまらなかったときで、処理を分岐させることができる。まさに、条件分岐じゃの。
 うん、よう分かったで、条件分岐
 では、次は、どのような条件が指定できるのか教えようかの。
 うん。
 さっきやったのは、n == 1 のように、左辺と右辺が同じかどうか比較する、というものじゃった。この、== のようなものを比較演算子と言う。文字通り、比較をするための符号じゃ。
 
比較演算子には、下記のようなものがあるぞ。

 ==  等しい
 !=   等しくない
 <   小さい
 >   大きい
 <=  小さいか等しい(以下)
 >=  大きいか等しい(以上)


 なるほどな・・・。
 比較演算子で比較された結果は、真(true)偽(false)かのどちらかになる。
 
 うむ、これもプログラムの用語じゃが、合っているか、違っているか、ということじゃな。
 例えば、1 == 1 は、合っておるから、真(true)となる。
 2 == 1なら、違っておるから、偽(false)となる。
 ふうん・・・。
 実際に表示させてみると、よう分かるぞい。下記のようにして実行してみろ。

7
8
9
begin
  p 1
== 1



 trueって出た。
 うむ、trueは、という意味じゃな。1 == 1 は、合っておるからtrueと表示されるわけじゃ。
 ということは、こうするとどうじゃ?

7
8
9
begin
  p 1
== 2

 1は、2とちゃうから、偽(false)になるんやな。



 うん。なったで。
 これは、どうじゃ?

7
8
9
begin
  p 3
>= 1

 ええと、>=ってことは、3が1以上かどうか判定するんやな。ということは、これは、真(true)や。



 正解じゃな。
 うん。
 条件分岐は、条件がかで、処理を分岐させるようになっておるんじゃ。なら、条件に当てはまったと判断し、当てはまったときの処理をする。
 
なら、条件に当てはまらなかったと判断し、当てはまらなかったときの処理をする、というわけじゃ。
 なるほどな・・・。
 第2章でやった、ボタン入力の処理で確認してみるかのう。

7
8
9
10
11
12
13
14
15
begin
  loop do
    Graphics.update

    Input.update

    if Input.trigger?(Input::C)  # 条件分岐の始まり(Cボタンが押された時)
      Audio.se_play
("Audio/SE/001-System01")    # 効果音を再生する
    
end
  
end


 うわ、いっぺんにややこしなった・・・。
 大丈夫じゃ。順番に見ていけば理解できる。
 うん。
 まず、8行がループの始まりじゃな。そして、14行がループの終わり。ということは、この間の処理を永遠に繰り返すわけじゃ。
 うん・・・そやな。
 9行目と10行目は、とりあえず置いておいて、問題は、11行目からの条件分岐じゃ。ここで指定されている条件は、ボタン入力があったかどうか、じゃな。
 これ、前やったな。確か、方向ボタンの下を押したときってやつや。
 うむ、あれと同じじゃな。ただし、今回は方向ボタンの下ではなく、Cボタンを押したかどうかを検知する。
 Input.trigger?(Input::C)は、Cボタンが押されておればを真(true)返し、押されていなければを偽(false)返す。
 これによって、Cボタンが押されたときだけ、12行が処理されるわけじゃ。
 そして、押されていないときは、何もせずループを繰り返すだけじゃな。
 12行は、効果音を再生するって書いてあるけど・・・。
 これは、新しく出てきた命令じゃのう。Audio.se_playは、効果音を鳴らす命令じゃ、括弧の中が鳴らす効果音のファイル名じゃ。
 といっても、ファイル名は、「001-System01」だけじゃぞ。その前の「Audio/SE/」は、フォルダ名じゃ。
 フォルダ名?
 うむ。効果音のファイルは、プロジェクトフォルダの中の、「Audio」というフォルダの中の「SE」というフォルダに入っておる。それを表すために、「Audio/SE/001-System01」と書くんじゃ。
 なるほど・・・。
 では、書き写して動かしてみい。Cボタンを押したとき、音が出れば成功じゃ。
 うん。ほんなら、ポチっとな・・・。
 ええと、真っ暗な画面しか出んけど、こんでええの?
 ええぞ。
 よし、ならCボタンを・・・。お! プッって言ったで!
 うむ、成功じゃな。
 うん。押すたんびに、プッって言うで。
 このように、条件分岐は、ボタン入力を検知するのにも使うんじゃ。
 なるほど・・・。
 さて、では今日は、これで終わりにするかのう。
 うん。次は、なにやんの?
 進級試験じゃ。
 え! 試験!?
 ここまでやったことで、簡単なプログラムは書けるようになったはずじゃからのう。実際にプログラムを書く試験をやってもらうぞい。
 そんな・・・まだ自信ないで・・・。
 大丈夫じゃ。分からんことがあれば、質問すればええからのう。
 うん。
 では、明日までに、今までやったことをおさらいしておけよ。
 はぁい・・・。



 本日のおさらい
・比較演算子で、真(true)か偽(false)かを判定
・if 〜 end で、条件に合う場合だけ(条件が真のときだけ)処理
・if 〜 else 〜 end で、条件に合うかどうか(条件が真か偽か)で分岐

 
次の章は
第7章 進級試験

 リンク
>>>この講座のトップページ
>>>タンクタウンのトップページ