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でループはされない