条件分岐させるのだ


いよいよ、条件分岐の話なんだけど・・・
条件分岐って分かる?
わかんない。
条件分岐って言うのは読んで字のごとく、条件によって、処理を分岐しましょう、ってことなの。
そのまんまじゃん・・・
例えば、こんな感じね。
*start
[eval exp="f.money=100"]
[eval exp="f.price=200"]
所持金は[emb exp="f.money"]円です。[r]
代金は[emb exp="f.price"]円です。[r]
[if exp="f.money<f.price"]
お金が足りないよ。
[endif]
[if exp="f.money>=f.price"]
お金は足りています。
[endif]

実行結果
if タグが初登場だね。
これは、exp属性で評価した式が真(正しい)なら、[if]〜[endif]で囲まれた部分を実行する、っていうタグなの。
f.money<f.price は、「f.moneyがf.priceより小さい」だよね。
今は、f.moneyが100で、f.priceが200だから、真になるのかな。
うん、そう。
その次の、f.money>=f.price はこの場合は偽(正しくない)だから、実行されないんだよ。
なるほど。 だから、実行しても「お金は足りています」って文章が表示されなかったんだ。
じゃあ、上のサンプルで、f.money=300 に変更してみるとどうなると思う?
「お金が足りないよ」は表示されなくて、「お金は足りています」が表示される・・・かな。
うん、正解。
あと、当たり前のことなんだけど、[if]と[endif]は必ずセットで使ってね。
[iscript]〜[endscript]とか、[link]〜[endlink]もそうだよね。
じゃあ、もうひとつサンプル見てみよう。
*start
[eval exp="f.money=100"]
[eval exp="f.price=200"]
所持金は[emb exp="f.money"]円です。[r]
代金は[emb exp="f.price"]円です。[r]
[if exp="f.money<f.price"]
[jump target="*足りない"]
[endif]
[if exp="f.money>=f.price"]
[jump target="*足りてる"]
[endif]

*足りない
お金が足りないよ。
[s]

*足りてる
お金は足りています。
[s]
結果はさっきと同じで、書き方が違うだけ。
分岐した後の処理がごちゃごちゃしそうだったら、この方法の方がいいかな。
[if]と[endif]で囲まれた部分が増えると、なんだかごちゃごちゃするもんね。
そういうこと。 あとね、今のサンプルはこういう書き方もできるんだよ。
*start
[eval exp="f.money=100"]
[eval exp="f.price=200"]
所持金は[emb exp="f.money"]円です。[r]
代金は[emb exp="f.price"]円です。[r]
[jump cond="f.money<f.price" target="*足りない"]
[jump cond="f.money>=f.price" target="*足りてる"]

*足りない
お金が足りないよ。
[s]

*足りてる
お金は足りています。
[s]
すっきりしたね。
でしょ?
cond属性って言うのがあって、この属性の中で評価された式が真なら、タグを実行するって意味なの。
今の場合だと、f.money<f.priceが真だから、jumpタグを実行するんだね。
そう。もし式の評価結果が偽だったら、タグは無視されるの。
これって、他のタグでも使えないの?
ほとんどのタグで使えるよ。
linkタグとかiscriptタグとか、[]〜[]でセットになるようなものは使えないけどね。
cond属性をうまく使えるようになると、すごく便利になるよ。
[if]〜[endif]で囲まなくてもいいんだもんね。
じゃあ、最後に今までのテストをしようか。
え〜〜〜〜〜、テストぉ〜〜?
そんなに難しくないから。
<問題>
1個50円のお菓子があります。
選択肢で「1個」「2個」「3個」のうち、何個買うかを選択するようにして、選択された個数に応じて合計金額を表示するようなスクリプトを作ってください。
ね?
簡単でしょ?
簡単かなぁ・・・
これくらいできるようになったら、簡単なゲームなら作れると思うよ。
先生!できました!
はやいね・・・
こんな感じ。
*start
[eval exp="f.price=50"]
何個買いますか?[r]
[link target="*1個"]1個[endlink][r]
[link target="*2個"]2個[endlink][r]
[link target="*3個"]3個[endlink][r]
[s]

*1個
[eval exp="f.個数=1"]
[jump target="*結果"]

*2個
[eval exp="f.個数=2"]
[jump target="*結果"]

*3個
[eval exp="f.個数=3"]
[jump target="*結果"]

*結果
[er]
合計金額は[emb exp="f.price*f.個数"]円です。[p]
[er]
[jump target="*start"]
すごいね。
完璧だよ。
がんばったもん。
これで、とりあえず基本的なことはできるようになったと思うよ。
ばっちりだね。
覚えることはまだまだ山のようにあるけどね。
うへぇ・・・


前のページ | MENU | 次のページ



inserted by FC2 system