- 1 名前:名前は開発中のものです。 [2006/09/08(金) 21:39:40 ID:/inm3Q++]
- 商業流通でなければフリーで利用可能な
ゲームエンジンNScripterについて語るスレです。 技術的な質問も可。ただし最低限のマニュアルには目を通してね。 ・本家 www.nscripter.com/ ・うpろだ andolf.hp.infoseek.co.jp/ ・前スレ Ver7.00 pc8.2ch.net/test/read.cgi/gamedev/1149639307/ Ver6.00 pc8.2ch.net/test/read.cgi/gamedev/1142593513/ Ver5.00 pc8.2ch.net/test/read.cgi/gamedev/1126791382/ Ver4.00 pc8.2ch.net/test/read.cgi/gamedev/1112550571/ Ver3.00 pc8.2ch.net/test/read.cgi/gamedev/1100029774/ Ver2.00 pc5.2ch.net/test/read.cgi/gamedev/1082131647/ 初代 pc5.2ch.net/test/read.cgi/gamedev/1005121290/ その他関連リンクは>>2-4あたり。
- 880 名前:名前は開発中のものです。 mailto:sage [2006/12/16(土) 02:22:03 ID:WrHDcd7B]
- 不安定というか、それこそが安定してるんちゃうか。
ヘタな使い方してるにも関わらずエラーがでなかったりするとヤバいぞ。 変な挙動しても、原因が突き止められん。
- 881 名前:名前は開発中のものです。 mailto:sage [2006/12/16(土) 03:06:47 ID:gG5Xz9/1]
- うーん・・・スタック消し用としては使わんほうがいいってことか。
それ用の命令が欲しいな
- 882 名前:名前は開発中のものです。 mailto:sage [2006/12/16(土) 09:08:40 ID:BwEJ2uC5]
- 普通にしろってばw
そんな特異な処理やってるようじゃ潰しが利かんだろ。 スタック消しなんて命令を常時使ってるような言語、少なくとも俺は知らんが。
- 883 名前:名前は開発中のものです。 mailto:sage [2006/12/16(土) 11:21:40 ID:M71D0nzT]
- for-next中(連続表示で簡易ムービーとか)にクリックでtrap>breakしてスキップとかは普通に使ってたが
そもそもgosubには最初から関係ないだろ?
- 884 名前:名前は開発中のものです。 mailto:sage [2006/12/16(土) 13:38:06 ID:8FVsW9Bs]
- > そもそもgosubには最初から関係ないだろ?
いや、gosubをbreakで抜けたいって意味じゃなくてだな。。。 何故かgosubで飛んだルーチン内でfor文を使わずに「break *ラベル」を使うとエラーになるんだわ。 gosubルーチン内じゃなければエラーにならんのだが。 理由は分からん。実際に試してみてくれ。
- 885 名前:名前は開発中のものです。 mailto:sage [2006/12/16(土) 13:40:30 ID:BoWWvG6U]
- >>881
breakで抜けれるのはあくまでfor-next。 for-next内のgosubから一気に外に飛ぼうとしたら、gosubのスタックに引っ掛かって当たり前。 他の言語だって、for処理やwhile処理内で呼び出した関数から直接外に出るなんて、普通ならまずしない処理だと思うぞ。 ずぼらせずに、gosubをdefsubにして、引数でtrap中断フラグ返して、その値でreturn後にbreak判定すれ。 それかfor-next使わず、ラベルgotoでループさせろ。それならgosub先からreturn *ラベルで一発で抜けれるんだし。 いつまでもgdgdとスタック消しクレクレ言ってる暇があったら、自分のスクリプト見直せ。
- 886 名前:名前は開発中のものです。 mailto:sage [2006/12/16(土) 13:42:19 ID:BoWWvG6U]
- おっとしまった、リロードすれば良かった。
しかし、884読んでも何したいのかさっぱりわからん。for文無いのに、何でbreakしてんだ?てかbreak *ラベルって何?
- 887 名前:名前は開発中のものです。 mailto:sage [2006/12/16(土) 13:46:45 ID:8FVsW9Bs]
- >>885
別にクレクレじゃないっての(笑) break *ラベルの仕様がどうなってんのかいろいろ試してみてるだけ。使用報告も兼ねつつ。 >>886 マニュアル嫁。 breakでラベルに飛ぶ命令
- 888 名前:名前は開発中のものです。 mailto:sage [2006/12/16(土) 13:53:05 ID:BoWWvG6U]
- ……最新版今ダウンロードしてgrep掛けたけど、載ってないよ??
- 889 名前:名前は開発中のものです。 mailto:sage [2006/12/16(土) 13:57:23 ID:LDOYuU0E]
- >>888
ヒント:新マニュアル\追加命令一覧.txt
- 890 名前:名前は開発中のものです。 mailto:sage [2006/12/16(土) 14:03:22 ID:BoWWvG6U]
- あ、すぐ下にあるのに見落としてた。大文字小文字区別でかけてたゴメン。
でもやっぱり、for-next無いのに使うのがおかしいんじゃないのかな…
- 891 名前:名前は開発中のものです。 mailto:sage [2006/12/16(土) 14:04:47 ID:ux/5bGeR]
- よほど複雑な入れ子にでもしない限り、
きちんとreturnで戻るようにしとけばスタック消す命令は必要ないと思うけど つか、for-nextの外でbreak使うこと自体がよろしくないでしょ >>885も言ってるけど、同じ処理を別の方法で実装できるなら for-nextを使う必要だってないわけだから そこらへん、もうちょっと柔軟に考えた方がいいんじゃないかな
- 892 名前:名前は開発中のものです。 mailto:sage [2006/12/16(土) 14:24:50 ID:M71D0nzT]
- あーまー、言いたいことは分かった気がする
要するにただ、gosub中じゃなければエラーにならないのが不思議だってことね 別に妙機能を要望してるわけでも文句言ってるわけでもなく
- 893 名前:名前は開発中のものです。 mailto:sage [2006/12/16(土) 14:35:15 ID:8FVsW9Bs]
- そう、それだ。文章下手ですまん・・・orz
で、この変な動きをなんとか便利に使う場所がないかと考えた結果、 「処理をtrapで抜けた場合に for-nextループ内で抜けたのかそれ以外の場所なのかに関係なく breakラベルで飛ばしておけば無関係にnextのスタックが消せる」 くらいかなぁ、と(;´∀`)
- 894 名前:名前は開発中のものです。 mailto:sage [2006/12/16(土) 14:40:42 ID:BoWWvG6U]
- いやいや、for-nextで抜けたのかどうかわからないような場合はあっちゃいかんだろ。
それ位なら大人しくラベルgotoしろって。 とりあえず原理を考えてみたけど、 gosubのスタック消しをbreak処理の後でしか行わないから、for-nextが無いとエラーになるんじゃないかな。 なんとなく処理としては、break→スタック消し→goto *ラベルなんだと思うけど、 ・*startの階層ではbreakもスタック消しも不要だから最後のgotoで移動できる。 ・gosub内のfor-next内のbreakラベルは全ての処理行うから移動できる ・gosub内直書きや、for-next内gosub中の直書きからでは、最初のbreakでエラーになるからNG ってことだと思う。まぁbreak *ラベル自体、お勧めしないってあるから、使わない方が良いと思うけどね。
|

|