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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
1016
ぬいノベルゲームのスプリクトのより良い書き方5解決


ぬい

リンク

2016/10/16(Sun) 19:04:28|NO.77172

私は今ノベルゲームを製作していて、以下のように

*textnext wait 1 repea wait 1 getkey tnext,1 if tnext=1 : return loop ... mes"文章" gosub *textnext ...
スプリクトを書いているのですが、
この方法を使用すると、他の命令等を使用している
こともあり、error9 になってしまいます。
(gosubが7割ぐらいになってる現状)

毎回repeat等をはさむということも出来るのですが、
面倒くさいのであまりしたくのないのです。

もっとマシな書き方などはありますでしょうか。

おねがいします。



この記事に返信する


KA

リンク

2016/10/16(Sun) 22:45:43|NO.77180

提示された抜粋スクリプトを見る限りでは
「gosubの使い方がおかしい」
としか回答出来ません。

マシな書き方はありますが、他の命令の使い方が分からないと
なんの役にも立ちません。



沢渡

リンク

2016/10/17(Mon) 01:28:21|NO.77181

スクリプトを見る限り、ERROR 9が起きている原因は、ループのネストが深すぎるからでしょう。
サブルーチン内のrepeat〜loopから脱出する際は、まずbreakでループから脱出し、
然るのちreturnで戻るようにしましょう。
そうしないとループがまだ終わらず、何回もサブルーチンを呼ぶと、呼んだ回数だけループが
入れ子になっていると判断されてしまいます。



Y_repeat

リンク

2016/10/17(Mon) 17:12:23|NO.77186

無限ループを使いたいならwhile 1しましょう

while 1 gosub *begin await 1 logmes "OK" wend *begin while 1 return wend
repeat的に使ってreturnしたいならfor使いましょう

while 1 gosub *begin await 1 logmes "OK" wend *begin for i,i,10,1 return next



ぬい

リンク

2016/10/17(Mon) 20:19:46|NO.77191

このような時にはbreakを使うのですね。
ありがとうございました。



Y_repeat

リンク

2016/10/17(Mon) 23:19:44|NO.77192

while〜wendの間もfor〜nextの間も途中でreturnして大丈夫ですよー
言葉足らずで申し訳ないです
拡張マクロという後から実装されたっぽいです
breakが好きなら何も言えませんがw



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