サブルーチンが何であるかを理解し、どれだけ便利かを体感します。
| ||
サブルーチンとは、少数の命令のまとまりのようなものです。
何度も同じ動作を繰り返したい時には、このサブルーチンを繰り返し呼び出すことで、 スクリプトに無駄を無くし、構造を分かりやすくすることが出来ます。 | ||
*define clickstr "」。!?",2 effect 10,10,1000 game *start 画像を表示します。 gosub *hyouji 画像を一枚ずつ消去します。 gosub *shoukyo また画像を表示します。 gosub *hyouji またまた画像を一枚ずつ消去します。 gosub *shoukyo 以上です。 end *hyouji lsp 0,":a;image\yuki.jpg",30,30 lsp 1,":a;image\yuki.jpg",240,30 lsp 2,":a;image\yuki.jpg",460,30 lsp 3,":a;image\yuki.jpg",135,250 lsp 4,":a;image\yuki.jpg",345,250 print 10 return *shoukyo csp 0 print 10 csp 1 print 10 csp 2 print 10 csp 3 print 10 csp 4 print 10 return | ||
「表示→消去」の動作が2回繰り返されます。 「gosub」と「goto」はよく似た命令文ですが、少し違います。 「goto」はラベルへジャンプしたらそれっきりですが、 「gosub」はラベルへジャンプした後に、「return」で元の場所に戻ってきます。 この機能を利用することで、繰り返し処理等の構造は非常に簡略化されます。 上の例では、あらかじめ画像の表示と消去の命令郡を作っておき、 必要に応じてgosubで何度も呼び出せるようにしています。 このような構造にすれば100行の処理を10回繰り返したいときでも、 gosubを10回書くだけで済んでしまいます。 100行の処理を10回も書く必要がないのです。 ※gosubを使ったら必ずreturnで戻しましょう。 gotoのようにジャンプしっぱなしにしてはいけません。 | ||
これまでの選択肢は、選んだ選択肢に対応するラベルへ「goto」同様にジャンプしていましたが、
ここでは対応するラベルへ「gosub」でジャンプし「return」で戻します。
| ||
*define clickstr "」。!?",2 effect 10,10,1000 game *start すきなものを選んでください。 selgosub "銃声音",*jyu,"ヘリコプター",*heli,"通常音楽",*bgm 音が流れました。 end *jyu wave "sound\bang.wav" return *heli wave "sound\heli.wav" return *bgm play "sound\bgm.mid" return | ||
「selgosub」も基本的に「select」と同じです。
唯一違うのは、ラベルへジャンプした後は必ず「return」で戻るということです。 使い方しだいでは「select」を用いるよりもスクリプトが簡単に済みます。 | ||
サブルーチンは、単純なノベル等では使う機会は殆ど無いと思われます。
ですが、複雑なシステムを使ったシュミレーション等を作ろうとしたとき、 このサブルーチンが必要になってきます。 独自の変わったシステムのゲームを作りたい人は是非活用しましょう。 次節では、入力ボックスを用いた文字列入力を行います。 | ||