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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
1107
shoshinsha時間制限の方法10未解決


shoshinsha

リンク

2008/11/7(Fri) 23:55:20|NO.20686


repeat stick key wait 1 if key=256 : break loop end

上のようなスクリプトで時間制限を設けたいのですが、どのようにすればよいのでしょうか?
例えば、10秒間クリックされなければ、終了するみたいなことです。
よろしくお願いします...



この記事に返信する


レノス

リンク

2008/11/8(Sat) 00:12:04|NO.20688

検索してから質問してください。
http://hsp.tv/play/pforum.php?mode=all&num=20351



shoshinsha

リンク

2008/11/9(Sun) 19:41:45|NO.20708

検索してもわからなかったので、投稿したのですが...
gettimeでどうやって時間制限ができるのですか?



Kpan

リンク

2008/11/9(Sun) 19:52:05|NO.20709

「hsp gettime 時間制限」のようなキーワードでGoogle検索してください。

>検索してもわからなかったので、投稿したのですが...
この掲示板にはエスパーはいませんので、shoshinshaさんの状況はまったく
分かりません。(^^;



check

リンク

2008/11/9(Sun) 19:54:43|NO.20710

どうやって検索したかが気になるなすぐに出るぞ。
まあいいや、
<sample>

;--------------------------------------- ;timersample ;10秒後に終了 ;--------------------------------------- tims=gettime(6) timm=gettime(5) timer=timm*60+tims repeat ntims=gettime(6) ntimm=gettime(5) ntimer=ntimm*60+ntims if ntimer=timer+10 : break stick key wait 1 if key=256 : break loop end
起動したときの時間と現在の時間を比較して、
10秒たったら終了。
比べやすいようにすべて秒に直している。



check

リンク

2008/11/9(Sun) 19:57:45|NO.20711

あっやべ!
ほかの人が検索することを進めているのに
サンプル出しちまった。
まあ、これからはしっかりと検索してくれ。



SYAM

リンク

2008/11/9(Sun) 21:56:46|NO.20712

checkさんのサンプルでは、あるタイミングでそれを開始すると無限に待機状態になります。
以下のように変更してみてください。

tims=gettime(6) timm=gettime(5) timer=timm*60+tims+10 if timer>3600:timer-=3600 repeat ntims=gettime(6) ntimm=gettime(5) ntimer=ntimm*60+ntims if ntimer=timer : break stick key wait 1 if key=256 : break loop end
※過去、潜伏期間を3ヶ月とする演出を組み込んだコンピュータウイルスが、永遠に15月を待ちつづけていたという話があります。。。


ただし、これでも、ロジック的にはまだ最大1秒未満の誤差が出ます。
※秒が変化する直前にカウント開始したら、当然その直後に1秒経ったことになってしまいます。

なので、
・カウント開始を、秒が変化した瞬間にする
・カウントを秒より細かい単位で行う
…のような工夫が必要です。



SYAM

リンク

2008/11/9(Sun) 21:58:52|NO.20713

…。あれ?
gettime(5) 要らなくなってるや。。



つくね

リンク

2008/11/11(Tue) 22:09:02|NO.20748

こんな手もありますが。。
(10msec * 10 * 100 = 10secなので。)
※wait 1だと正確な時間が計れないみたいです。(処理が間に合わない?)

for i, 0, 100
stick key
wait 10
if key=256 : _break
next
end



check

リンク

2008/11/11(Tue) 22:46:21|NO.20750

wait1の時間を求める方法を捨てておく。

#uselib "WINMM.DLL" #cfunc timeGetTime "timeGetTime" timer=timeGetTime() wait 1 ntimer=timeGetTime timedif=ntimer-timer mes timedif
Windowsが起動してからの経過時間で求める。
すると正確な10msじゃ無いことがわかる。



check

リンク

2008/11/12(Wed) 16:43:01|NO.20754

ミスった・・・。
5行目のtimeGetTimeに()をプラスしてくれ。



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