HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1029
ふぁるエラー9について4解決


ふぁる

リンク

2012/10/29(Mon) 22:16:07|NO.50337

HSP初心者です。

最近エラー9がどうしても出てしまいます。
調べてみたところ、サブルーチンを大量に使うとなってしまうというようなことはわかりました。

しかし、今の私ではサブルーチンを大量に使う方法しかわからないので、
数を減らすことはできないかなぁと思います。

どうやったらエラーを出さないようにできるでしょうか。


一応、アバウトなプログラムを示しておきます。
前に質問したときcatsさんが丁寧にも教えてくれたプログラムの改変なので、
本質的な部分を理解していなく、サブルーチンを使う量を減らす方法が分からないのです。


ldim story_y,4 story_y=*y1,*y2,*y3,*y4 y=0 onclick gosub story_y.y *y1 pos 40,380 picload "mbox.png",1 wait 10 pos 60,400 text 40 sdim sentence wait 40 sentence(1)="一文目" sentence(2)="二文目" sentence(3)="三文目" a=0 while (a<4) emes sentence(a) wait 40 a=a+1 wend y+ onclick gosub story_y.y repeat pos 640,500 picload "mbox2.gif",1 wait 80 pos 640,500 picload "mbox22.gif",1 wait 80 loop stop *y2 pos 40,380 picload "mbox.png",1 wait 10 pos 60,400 text 40 sdim sentence wait 40 sentence(1)="一文目" sentence(2)="二文目" sentence(3)="三文目" a=0 while (a<4) emes sentence(a) wait 40 a=a+1 wend y+ onclick gosub story_y.y repeat pos 640,500 picload "mbox2.gif",1 wait 80 pos 640,500 picload "mbox22.gif",1 wait 80 loop stop *y3 pos 40,380 picload "mbox.png",1 wait 10 pos 60,400 text 40 sdim sentence wait 40 sentence(1)="一文目" sentence(2)="二文目" a=0 while (a<3) emes sentence(a) wait 40 a=a+1 wend y+ onclick gosub story_y.y repeat pos 640,500 picload "mbox2.gif",1 wait 80 pos 640,500 picload "mbox22.gif",1 wait 80 loop stop *y4 pos 40,380 picload "mbox.png",1 wait 10 pos 60,400 text 40 sdim sentence wait 40 sentence(1)="一文目" a=0 while (a<2) emes sentence(a) wait 40 a=a+1 wend y+ onclick gosub story_y.y repeat pos 640,500 picload "mbox2.gif",1 wait 80 pos 640,500 picload "mbox22.gif",1 wait 80 loop stop


これのもっとサブルーチンの多いものが今の私のゲームの状態です。
時間がないので、知恵をお貸しください。



この記事に返信する


暇人

リンク

2012/10/29(Mon) 22:35:54|NO.50338

gosubは基本的にreturnとセットでreturnせずにgosub出来る数は決まってる
returnする必要が無いならgosubじゃ無くgotoにする



ふぁる

リンク

2012/10/29(Mon) 23:03:32|NO.50339

>>暇人さん

確かにそうですね。
gosubをgotoにしてもプログラムは動きました。エラーは出なくなりました。
ありがとうございます!
あと、returnしないでgosubできる数って限られているのですね…!

初歩的な質問をして、申し訳ありませんでした。



暇人

リンク

2012/10/30(Tue) 02:00:03|NO.50342

NO.50337みたいに同じような処理を何度も繋げて行くと
後で何か修正したときに修正漏れしたり色々不具合出るよ
それと同じ画像は何度もロードする必要は無い

他にも色々方法はあるけど楽な方法を書いて見る

#include "hsp3util.as" screen 0,800,600 mbox_id=1 mbox2_id=2 mbox22_id=3 celload "mbox.png",mbox_id //画像をロードしてcelputで描画する準備 celload "mbox2.gif",mbox2_id celload "mbox22.gif",mbox22_id mboxpos_x=40 mboxpos_y=380 mbox2pos_x=640 mbox2pos_y=500 mespos_x=60 mespos_y=400 text_wait=40 //{" "}で 囲むと文字列を複数行書ける txt(0)={" 一文目 二文目 三文目 "} txt(1)={" 一文目 二文目 三文目 "} txt(2)={" 一文目 二文目 三文目 "} txt(3)={" 一文目 二文目 "} txt(4)={" 一文目 "} onclick goto *y1 y=0 *y1 pos mboxpos_x,mboxpos_y celput mbox_id,0 //celloadで読み込んだ画像を描画 wait 10 pos mespos_x,mespos_y text text_wait split txt(y),"\n",sentence //改行毎に配列に分割 linemax=stat //分割された数 wait 40 a=0 while (a<linemax) emes sentence(a) wait 40 a=a+1 wend y+ repeat pos mbox2pos_x,mbox2pos_y celput mbox2_id,0 wait 80 pos mbox2pos_x,mbox2pos_y celput mbox22_id,0 wait 80 loop



ふぁる

リンク

2012/10/30(Tue) 04:36:19|NO.50343

>>暇人さん

ありがとうございます!!!!
画像を何度も読み込む必要ないのですね!!!この方法だと!

本当に感謝です。
他にも同じ画像を何度もロードしている箇所があるので、
これを参考に変えていこうと思います。ありがとうございます!



ONION software Copyright 1997-2021(c) All rights reserved.