>>エラーコード19「0で除算しました」
この件、「NumberOfTimes」が0になっている為割れないよ、とエラーが出てるのだと思います
*main
repeat NumberOfTimes
上記のコードを下記に書き換えて実行してみてください。
*main
if NumberOfTimes<=0 : dialog "試行回数が0以下" : end
repeat NumberOfTimes
追加(変更)したのは2行目のみです。
内容としては試行回数を入れている変数「NumberOfTimes」が0かそれ以下になっている場合、
ダイアログでエラーを表示し、ソフトを終了するものです。
こちらを実行してみて、もしダイアログが表示されるようであれば、
「*main」の処理にたどり着くより前の処理に問題があります。
逆に、ダイアログは表示されないけどエラー19は出るという場合、
「*main」の処理以降に問題があります。
どのようなコードを付け加えたのか分からない為、原因の判断が出来ないという所ですが、
・NumberOfTimesに指定している数値が0になってる
・NumberOfTimesの指定しているコードが消えてる
・NumberOfTimesの変数を別用途に使用したり、内容を後から上書きしたりしている
といった点を確認してみてください。パッと思いつく原因はこの位です。また、
goto,*main ;処理している場所を*mainへ移動
NumberOfTimes = 5 ;この行処理されない
*main ;1行目のgoto命令でここにくる
上記の様に、「NumberOfTimes」の指定してるコードはあるけど、
処理が実行されない状況になってしまって無いかもご注意ください。
解決すればそれで良いのですが、しない場合、問題が無いのであれば
追加されたコードを提示頂けると判断しやすくなります。
>>スペースキーが押されても押されなくても3秒で画像が切り替わるようにする
こちら、「*pic1」と「*pic2」の
「timeGetTime : start = stat」の後のコードを下記の様に書き換えてください。
space = 0 : finish = 0 ;各変数を初期化
while (now-start) < 3000 ;3.000秒経過するまで繰り返し
timeGetTime : now = stat ;現在経過したタイムを取得
getkey space,32 ;32(spaceキー)が押されたらspaceに1を代入
if space=1 & finish=0 : finish = stat ;spaceが1で、尚且つfinishが0ならタイムを入れる
await 1 ;0.001秒間待ち
wend ;繰り返し
if finish=0 { ;finishが0(spaceキーが一度も押されてない)かどうか確認
要点を。
・space = 0 : finish = 0
こちら、finishにタイムが入ってるかどうかでキーの入力有無を判定するようにしたため、
画像表示で都度finishを0にリセットするようにしています。
・while (now-start) < 3000
繰り返しの条件も変更。これまではキーが入力されたらループを終えてましたが、
3秒経過したかどうかを判断し、3秒経過したらループを終えるように変更しました。また、
その2行下にあった「if (now-start)>=3000 : _break」というコードは不要になった為削除し、
「wend」の1行下にあった「timeGetTime : finish = stat」のコードも削除しています。
・if space=1 & finish=0 : finish = stat
こちらでキーが押された場合は変数finishに現在のタイムを入れています。
また、スペースキーを一度押した後再度2回3回と押した場合、最後に押したタイムが記録される為、
「space=1」(スペースキーが押された場合)の条件に加えて「finish=0」を入れる事で、
一度finishにタイムを入れた後は、何度キーを押してもタイムを上書きしないようにしています。
尚「&」は、尚且つといった意味合いで、複数の条件が共に満たされた場合のみ処理されます
・if finish=0 {
常に3秒画像を表示する関係上、3秒経過したかどうかで正誤判定出来なくなったため、
finishが0かどうかで判断しています。
一度でもキーを入力した場合はfinishにタイムが入る為、そこで判断できるという具合ですね。
以上で求めている動作は出来るかなと思います。
さて最後に、便宜上「3秒」や「3.000秒」といった形で記載させて頂いてますが、
上で窓月ららさんがご指摘下さってる通り、誤差が生まれる為正確には「約3秒」となります。
そこまでの制度は求めてなくて、多少の誤差は許容範囲で全然OK!という事であれば良いのですが、
数msの誤差も許さない様な状況下での使用は適していませんので、その点ご留意ください。