rndとmoduleの関係について
トマト 2013/5/14(Tue) 00:35:16|NO.54029
最近モジュールの勉強を始めたのですが、自分でテストプログラムを
作ってみたところ、エラー36が発生しました
原因を探るため色々と削って簡潔なものを作ってみたのですが(以下のプログラム)
どうやらモジュールの外側でのrnd命令の利用が原因?
「;a = rnd(16)」の「;」を取ると発生するようです
rnd命令を使うと、モジュールで何か問題が起きるのでしょうか?
#module babble x, y
#modinit int _x, int _y
x = _x : y = _y
return
#modfunc draw
pos x, y
mes"●"
return
#global
con = 0
*main
redraw 0
cls 0
;a = rnd(16)
if (make < 16)&&(a == 0){
make++
newmod babbles, babble, rnd(240), rnd(180)
}
foreach babbles
draw babbles.cnt
loop
redraw 1
title "con == " + con
await 50
goto *main
ht. 2013/5/14(Tue) 01:01:18|NO.54030
rndによってaが0以外の値になるとnewmodが実行されません。
すると存在しないモジュール変数にdrawを実行しようとしてエラーになります。
トマト 2013/5/14(Tue) 01:20:31|NO.54032
ありがとうございます
make > 0でdrawを実行するようにしたら上手く作動しました!
トマト 2013/5/14(Tue) 01:21:32|NO.54033
解決済みチェック忘れです
暇人 2013/5/14(Tue) 01:27:02|NO.54034
それでも良いけど
*main前にdimtypeでモジュール型変数に初期化しとく方法もある
dimtype babbles,vartype("struct"),16
これは要素16個確保してるけどnewmodした分しかforeachでループはされない