熊でもわかる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章 進級試験 リンク >>>この講座のトップページ >>>タンクタウンのトップページ |