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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0215
雷光ノベルゲーム作成中2解決


雷光

リンク

2013/2/15(Fri) 22:16:48|NO.52416

ノベルゲームツールを自作しようと思っていたのですが、命令を読むところでループから抜け出せなくなってしまいました。
スクリプトは関係ないであろう場所を削っているのでおかしな点があるかもしれません。
起動するとwaitなしでループした時のようになるので注意してください。
どこがおかしいのか分かる方、教えてくださると助かります。

#include"hsp3util.as" title"ノベルゲーム" sdim one,256 sdim fk,64,32 buffer 1,640,480 boxf :color 1,1,1 buffer 2,640,480 gsel color 1,1,1 *read rp++:notesel st:noteget one,rp re=strmid(one,0,1) if re=";" :split one,",",a,b,c switch a case ";backload":goto*glf swend gsel 1 if it<=20 :it++:by+20 if it>20 :color 255,255,255:boxf:by=10:it=1 pos 0,by color 1,1,1 emes""+one+"" color 255,255,255 pos 2,by emes""+one+"" gsel pos 10,10 gmode 2:gcopy 1,0,0,640,480 *glf rp++:notesel st:noteget one,rp gsel 2 //picload str(b) gsel goto*read



この記事に返信する


(´ω`)

リンク

2013/2/16(Sat) 00:57:41|NO.52424

うーん……読みづらい……(u´ω`)

まず、本来はラベル*glfの前にも「goto *read」が必要なのでは?
switch文で構文解釈をし、命令でなければ文章だと判断して表示するようですが、
これだと文章表示の後そのまんま命令処理に入ってしまいます。

それと、case文にはswbreak文をセットで使いましょう。

あと、if文でのマルチステートメント(1行内にコロンで複数の命令を書く方法)は、
後々に悪いクセとなりやすいのでなるべく{}を使う方がいいかと。

さらに、もしシナリオファイルの1行目に特別な意味を持たせないのであれば、
11行目の「rp++」は12行目に移した方がいいように思います。
(1行目は特別な意味があるなら、このままでおk)

そして、このソースだとそもそもループを抜ける処理が入ってませんから、永久に
まわり続けます。例えば「;end」を解釈するcase文を先に作らないと。(u´ω`)



雷光

リンク

2013/2/16(Sat) 10:05:07|NO.52430

ありがとうございました! 解決しました。
なるべく読みやすいスクリプトを心がけます。



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