【マラソン期間限定 最大2000円OFFクーポン発行中!】1台分4本購入で送料無料 17インチProdrive GC-05K 17×8.0J 5/114 +45 HBS(ハイパーブリティッシュシルバー) FACE1 鍛造 プロドライブ GC05K 新品アルミホイール1本価格 国産車用


 >  > 【マラソン期間限定 最大2000円OFFクーポン発行中!】1台分4本購入で送料無料 17インチProdrive GC-05K 17×8.0J 5/114 +45 HBS(ハイパーブリティッシュシルバー) FACE1 鍛造 プロドライブ GC05K 新品アルミホイール1本価格 国産車用
このページはCOOL ONLINE終了に伴いO-Show様の許可を得て作成したシャリオ/シャリオグランディス4WD[N44W]下記詳細要確認K&Nリプレースメント純正交換用エアーフィルター代引不可●送料¥540-(離島取次地域除く)のミラーサイトです
[DIXCEL (ディクセル) フロント ブレーキローター FP 1124793 メルセデスベンツ W204 (SEDAN) 204077 07/06~ C63 AMG] [Profile] [NScripter] [BBS] [Links]
中級編 No.7
サブルーチン
■概要■
処理をまとめて書いておき、スクリプト中のどこからでもそれを呼び出して処理をさせることができる。

プログラミング的で楽しくて便利、それがサブルーチンです。


使用命令:

「gosub」(マニュアル 実行制御系 FE)
「return」(マニュアル 実行制御系 FE)
■サブルーチンとは

サブルーチンをするには「gosub」という命令を使いますが、これは「goto」命令と同じく指定したラベルに飛ばす命令です。

しかし、「gosub」でラベルに飛ばした場合は、「return」命令を使うことでその「gosub」を書いたところまで再び戻ってくることができます。


この、「飛ばし元のところに戻ってこれる」というのが重要で、こうすることによりラベルと「return」に囲まれた部分をを一つの処理の塊と見なすことができるようになります。

そして例えば、「スプライト○番と○番を非表示にして、○番を表示して、変数に数値を代入して、背景を変えて……」という処理が何度もスクリプト中で出てきた場合 【2018年製~】 165/55R14 ブリヂストン ネクストリー サマータイヤ ホイールセット 4本 BRIDGESTONE NEXTRY スマックスパロー 14-4.5J 車種例 ワゴンR ライフ パレットSW ルークス MRワゴン モコ ミラ、それをまとめて書いておいて必要になったらgosubで呼び出すことにより、スクリプトを書くのを楽にすることができます。



■スクリプト

では、実際にスクリプトを見てみましょう。


gosub *set_kaiwa
gosub *set_botan_01
print 1
btnwait %0
......
*set_kaiwa
vsp 5,0
vsp 6,0
vsp 7,1
return
*set_botan_01
btndef "botan.jpg"
btn 1,10,10,50,50,0,0
btn 2,10,70,50,50,50,0
btn 3,10,130,50,50,100,0
return


「......」の部分は、単に続きを省略しているだけで、意味はありません。


このスクリプトは、まず「*set_kaiwa」ラベルに飛び、「vsp」命令の処理が終わったら再び上まで戻ってきて、そして次に「*set_botan_01」のラベルに飛ばし、ボタン定義を行い vw フォルクスワーゲン GOLF7.5R (CARBON)フロントリップスポイラー HALT エアロパーツ、また戻って来ています。

このように、何度もありそうな処理をまとめておくことができます。



■サブルーチンの注意点

gosubでサブルーチンを行った場合、必ずreturnで戻してください。

gosubで飛ばしたところからそのまま始めたり、gotoで違うところに飛んで始めたりすると 【USA在庫あり】 マスタング Mustang ワイド ツーリング シート ビンテージ 87年-09年 イントルーダー VS1400G 489368 HD、「スタック」と呼ばれるものを消費していってしまいます。gosubで飛ばされると、NScripterは飛ばしたことを覚えていなければならないからです。

プロドライブ HBS(ハイパーブリティッシュシルバー) 5/114 17インチProdrive GC-05K GC05K 新品アルミホイール1本価格 【マラソン期間限定 17×8.0J FACE1 +45 17×8.0J 最大2000円OFFクーポン発行中!】1台分4本購入で送料無料 国産車用 17インチProdrive 鍛造


スタックは有限ですので、使い終わった画像を消去するように、スタックも戻してあげましょう。returnで元の場所に戻ることがスタックを戻すことになります。

そして何より、そういう書き方をしているとスクリプトが読みにくくなってしまって、結局書くのが楽ではなくなってしまいます。

これは特に重要なことなので、肝に銘じておいてください。



■サブルーチンからさらにサブルーチン

サブルーチンで飛んだラベルから、さらにサブルーチンで別のラベルに飛ぶことができます。

上でも言っているようにサブルーチンから別のところに飛ばしたり始めたりすることはいけないことですが アクア シートカバー NHP10 一台分 アルティナ 2502 スタイリッシュ レザー シートカバー、サブルーチンの場合は別です。

なぜなら 、returnは一つ前の飛ばし元に戻ってくれるため、

【マラソン期間限定 最大2000円OFFクーポン発行中!】1台分4本購入で送料無料 17インチProdrive GC-05K 17×8.0J 5/114 +45 HBS(ハイパーブリティッシュシルバー) FACE1 鍛造 プロドライブ GC05K 新品アルミホイール1本価格 国産車用
Ateダスト軽減ブレーキパッド フォルクスワーゲン ゴルフ5 GLI GT1KBLR 種類有 リア用!【メーカー在庫あり】 (株)タンガロイ タンガロイ 外径用TACバイト CTEL2525-6T32 HD.DAD ギャルソン フロントテーブル スクエアタイプ ベガパターン ローレルデザインロゴ ブラックオーク S-MX RH1/2,スタッドレスタイヤ コンチネンタル バイキングコンタクト7 215/65R16 102T XL & ティラード アルファ 6.5-16 タイヤホイール4本セット 215/65-16 CONTINENTAL VikingContact 7

【マラソン期間限定 最大2000円OFFクーポン発行中!】1台分4本購入で送料無料 17インチProdrive GC-05K 17×8.0J 5/114 +45 HBS(ハイパーブリティッシュシルバー) FACE1 鍛造 プロドライブ GC05K 新品アルミホイール1本価格 国産車用

、二回飛んだら二回returnで戻れば元のところにもどってこれるからです。

このようにサブルーチンしていくことをプログラミングでは「ネスト化する」などと言ったりします。

きちんとgosubとreturnを一対一に対応させていれば、複数回ネスト化しても元に戻ってこれるはずなので問題ありません。ただし、やはり「スタック」は有限なのでネスト化する回数には限界があります。

マニュアルには明記されていませんが、1000回ぐらいネスト化できるようです。
(そんなにたくさんやることは恐らく無いと思いますが)



ネスト化のスクリプトを見てみましょう。


gosub *set_boutou
......
*set_boutou
gosub *set_kaiwa
gosub *set_window
return
*set_kaiwa
vsp 5,0
vsp 6,0
vsp 7,1
return
*set_window
setwindow 8,16,23,16,26,26,0,2,20,1,1,#999999,0,0,639,479
return


スクリプトの流れを追って行けば、必ず元の場所に戻れるはずです。


このスクリプトでは、「*set_kaiwa」と「*set_window」の二つの処理は独立しているため、単体で他のところから呼び出して利用することができます。
■総括■
gosubを利用すれば 053-104EXP 053-104EXP エキゾーストパイプ HST(辻鐵工所) 1本、まるで自分だけの命令を作っているようになります。

大変便利なので、

【マラソン期間限定 最大2000円OFFクーポン発行中!】1台分4本購入で送料無料 17インチProdrive GC-05K 17×8.0J 5/114 +45 HBS(ハイパーブリティッシュシルバー) FACE1 鍛造 プロドライブ GC05K 新品アルミホイール1本価格 国産車用

、ぜひサブルーチンの使い方を習得してみてください。

【マラソン期間限定 最大2000円OFFクーポン発行中!】1台分4本購入で送料無料 17インチProdrive サイズ:19-2.15 GC-05K 17×8.0J 赤/白 5/114 +45 HBS(ハイパーブリティッシュシルバー) FACE1 鍛造 プロドライブ GC05K 新品アルミホイール1本価格 国産車用


次へ   前へ   NScripterのIndexへ
goto *TOP
{yahoojp} {binaryheaven.ivory.ne.jp}
{yahoojp}jpprem01-zenjp40-wl-zd-45291