STGを作っていますがボスのスペカ攻撃を入れて、あたり判定を作ろうとしたら
「サブルーチンやループのネストが深すぎます」というエラーが出てしまいましたorz
それで原因を調べてみました。
http://quasiquote.org/hspwiki/HSP3%E3%81%AEFAQ%3a%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%AE%E6%84%8F%E5%91%B3%E3%81%A8%E5%AF%BE%E5%87%A6%E6%B3%95%E3%81%8C%E5%88%86%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84#H-18ahz0y
>9 "サブルーチンやループのネストが深すぎます"
>gosub命令、repeat命令を多重に実行しすぎた時に表示されます。
それで「repeat」を少し削ってみましたが改善せず・・・
メインプログラムとにらめっこして、9個ぐらい「repeat」を削れそうなものを見つけました。
その反動で「gosub」を削ることも可能。
まだそちらは直してないのですが、まだ1面の中ボスなんですよねこれ。
(直した場合正常作動するかわからない)
URL先にありましたプログラム
--------------------------------------------------------
---------------------------------------------------------------------
*Label_A ;31ループ/30ネストでエラー ;メイン gosub 19/if抜き 12/ifあり 7/repeat 28 repeat repcnt++: title "Label_Aループ:"+repcnt+"個目のrepeat/"+(repcnt-1)+"回ネスト" wait 50: goto *Label_B loop stop *Label_B repeat repcnt++: title "Label_Bループ:"+repcnt+"個目のrepeat/"+(repcnt-1)+"回ネスト" wait 50: goto *Label_A loop stop
で調べてみると「31ループ/30ネストでエラー」でエラーが起きますけど
HSPでは「31ループ/30ネスト」が限界なんでしょうか?
ちなみにメインプログラムの方は「gosub 19/if抜き 12/ifあり 7/repeat 28」です。
・メインループの中に「gosub」が19個ある(もっとある)
・その中で「if」で飛ぶやつが7個
・「repeat」はプログラム全体で28個
自分はまだ初心者なので無駄な宣言等が多いのが原因のひとつだと思います。
予断だけどメインプログラムは1537行ある(1面の中ボスで)
この先1ボス〜6ボスまでプログラミングしなければならないので「repeat」が自然と増えると思います。
そう考えるとこの先不安です・・・
メインプログラムを大改造するしかないんでしょうか・・・
若干相談みたいのが混じってますが、よろしくおねがいします。
C言語を若干かじっているので、自由が利くC言語に行った方がいいだろうか・・・
だけど、C言語でゲーム作るの難しすぎてHSPに来たんだけどね(´・ω・`