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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0514
トマトrndとmoduleの関係について4解決


トマト

リンク

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



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