ジャンプさせるのだ


いよいよ、スクリプトっぽいスクリプトの領域に入ってきたよ。
む・・・難しくなるわけ?
少しでもプログラムとか言語を経験したことがある人なら、問題ないと思うよ。
ってゆうか、そういう人ならそもそも、こんなところ読んでないと思うんだけど・・・
あはは、それもそうか。
笑い事じゃないっての・・・
じゃあ、少しずつやろうね。
今回はシナリオのジャンプから。
ジャンプ?
ほら、ずっと前に「ラベル」ってやったでしょ。
あのラベルは、ここへの伏線だったんだよ。
*start ってやつだよね。
そうそう。 じゃあ、今日も早速、サンプルから実行してみよ。
*start
こんにちは。[p][er]
こんばんは。[p][er]
[jump target="*start"]
これだけ?
そう、これだけ。
とりあえず、実行してみて。
「こんにちは。」と「こんばんは。」をずっと繰り返してるよ。
たぶん、もう分かってると思うけど、スクリプトの最後のjumpタグでシナリオをジャンプしてるんだよ。
「こんばんは。」を表示した後、「*startにジャンプ」してるから、ずっと繰り返しになるんだね。
ちなみに、target属性の中身はラベルの名前だよ。
なるほどねぇ。
でも、こんなの使うことあるの?
これだけで使うことはあまりないかもしれないけど、この後出てくる、色んな命令と組み合わせてよく使うんだよ。
じゃあ、それ教えてよ。
あわてないで。 もうひとつ、サンプル実行してからね。
*こんにちは
こんにちは。[p][er]
[jump target="*おはよう"]

*こんばんは
こんばんは。[p][er]

*おはよう
おはよう。[p][er]
[jump target="*こんにちは"]
あれ?
最初は *start じゃなくてもいいの?
分かりやすいように、ずっと最初は *start にしてたけど、別に決まりはないんだよ。
あと、これを見て分かるように、ラベルには日本語も使えるから、わかりやすい名前をつけるといいよ。
あれ?
でも、このスクリプトだと、「こんばんは。」を表示しないんじゃ・・・
よく分かったね。
その通り。そういうことを確認するためのサンプルだったの。
・・・・私のことバカにしてない?
え?
そ、そんなことないよ。
ふーん・・・
ま、いいけど。
じゃ、じゃあ、次行こうか。
今度は、callタグね。まずはサンプルを。
*こんにちは
こんにちは。[p][er]
[call target="*おはよう"]

*こんばんは
こんばんは。[p][er]
[jump target="*こんにちは"]

*おはよう
おはよう。[p][er]
[return]
さっきのサンプルとほとんど一緒だよね。
callタグはjumpタグと一緒で、指定されたところにジャンプするんだけど、jumpタグと違って、また戻ってくるんだよ。
その戻ってくるための命令がreturnタグね。
ということは・・・ 「こんにちは。」を表示した後、callタグで *おはよう にジャンプして、returnタグで戻ってきて、「こんばんは。」を表示して、今度はjumpタグで最初の「こんにちは。」に戻ってくるのかな?
うん、そういうこと。
これも使い道があるの?
あるんだよ、これが。そのうち、出てくると思うから。
ちなみに、callタグでジャンプした先から、さらにcallタグでジャンプできるんだけど、戻ってくるのは直前の呼び出し元だからね。
よく分かんないんだけど・・・
図で書くとこういう感じ。
@とかAがジャンプする順番だよ。


頭痛くなってきた・・・
すぐに慣れるよ。
[s]って言うの、初めて見るよね?
これはストップタグって言って、ここでシナリオをストップさせるためのものなの。
*2は最初にcallでジャンプしたのに、戻ってきたらまた*2に続くでしょ。だから、ここでストップさせるの。
他にも、選択肢を表示するときにも使うよ。
選択肢を表示しても、ストップしないと、選択する前に次にいっちゃうもんね。
そういうこと。
あれ?
そう言えば、選択肢もジャンプだよね・・・
お、なかなか鋭い。
じゃあ、せっかくだから、選択肢もやってみようか。
なんか、ゲームっぽくなってきたね。
選択肢を使うにはlinkタグを使うの。使い方は基本的にはjumpタグとかcallタグと一緒。
ただ、選択肢って、普通はボタンとか文字とかが表示されていて、それを選ぶでしょ。その文字を書くところが違うよね。
文字を書くための属性があるの?
ううん。
linkタグは[link]文字[endlink]って形で、2つのタグで囲んで使うの。
囲まれた文字が選択肢になるってわけ。
なるほど・・・なんだか、私にもできそう。
こんな感じかな?
*start
[link target="*1"]1だよ[endlink][r]
[link target="*2"]2だよ[endlink][r]

*1
1が押されたよ

*2
2が押されたよ
惜しい〜。
あれ?
全部表示されちゃったよ・・・あ!わかった!!
こうだね!
*start
[link target="*1"]1だよ[endlink][r]
[link target="*2"]2だよ[endlink][r]
[s]

*1
1が押されたよ
[s]

*2
2が押されたよ
[s]
大正解!
でも、こうするともっといい感じかも。
*start
[link target="*1"]1だよ[endlink][r]
[link target="*2"]2だよ[endlink][r]
[s]

*1
[er]
1が押されたよ[p][er]
[jump target="*start"]

*2
[er]
2が押されたよ[p][er]
[jump target="*start"]
確かに・・・
悔しい・・・一生懸命考えたのに。
初めてなんだからあれで十分だよ。
いくつも作ってるとすぐに慣れるから。
だと、いいけど。
最後にひとつだけ。
今回は小さいサンプルだったから、target属性だけで大丈夫だったけど、シナリオファイルが大きくなってくると、いくつかのシナリオファイルに分割して作った方がいいと思うんだよ。
分割?
例えば、シーン1、シーン2、・・・で、ファイルを別々にするとかね。
今回使った、jump、call、linkのタグはどれもtaget属性だけじゃなくて、storage属性も指定できるの。
このstorage属性でシナリオファイルを指定すれば、別のシナリオファイルのラベルにもジャンプできるってわけ。
[jump storage="second.ks" target="*2"] みたいに?
そういうこと。
今はピンと来ないかもしれないけど、知っておいて絶対に損はないよ。
でも、分けすぎると今度はファイルが増えすぎて管理が大変になるから、ほどほどにね。
わかった、覚えとく。
うん。
じゃあ、次回は変数のお話。
なんだか、その言葉だけで十分難しそうね・・・


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



inserted by FC2 system