3.1 サブルーチンの利用

今回の目的
 サブルーチンが何であるかを理解し、どれだけ便利かを体感します。

 


サブルーチン
 サブルーチンとは、少数の命令のまとまりのようなものです。

 何度も同じ動作を繰り返したい時には、このサブルーチンを繰り返し呼び出すことで、
 スクリプトに無駄を無くし、構造を分かりやすくすることが出来ます。

*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」を用いるよりもスクリプトが簡単に済みます。

 


まとめ
 サブルーチンは、単純なノベル等では使う機会は殆ど無いと思われます。

 ですが、複雑なシステムを使ったシュミレーション等を作ろうとしたとき、
 このサブルーチンが必要になってきます。

 独自の変わったシステムのゲームを作りたい人は是非活用しましょう。

 次節では、入力ボックスを用いた文字列入力を行います。

 


前へ    TOPへ戻る    次へ