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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0319
匿名希望さん時間の測定方法8解決


匿名希望さん

リンク

2010/3/19(Fri) 15:55:36|NO.31399

時間の測定方法を教えてください。

たとえば、
起動時刻から45秒後に「45秒が経過しました…」のように表示するにはどうしたらいいでしょうか?
wait,awaitを使わない方法がありましたら教えてください



この記事に返信する


SYAM

リンク

2010/3/19(Fri) 16:46:40|NO.31402

時刻 を ある時刻からの経過時間で表すことで、計算しやすくします。
以下、標準の命令を使った かんたんな例です。


i = 45 w = i + gettime(4)*60*60 + gettime(5)*60 + gettime(6) if( t >= 86400): w-=86400 *@ t = gettime(4)*60*60 + gettime(5)*60 + gettime(6) if(t>w): mes ""+i+"秒が経過しました.":stop title ""+t wait 1 goto *@b

測る時間が1日を越えなければこれでできます。多分。
ただし、秒単位の精度でしか測っていないので、1秒未満の誤差が出ます。



inovia

リンク

2010/3/19(Fri) 17:07:54|NO.31404

Win32API の timeGetTime を使ってみた例


#uselib "winmm.dll" #cfunc timeGetTime "timeGetTime" 開始時間 = timeGetTime() repeat 現在時間 = timeGetTime() 経過時間 = (現在時間-開始時間)/1000 if 経過時間>45:break title ""+ 経過時間 +"秒" wait 12 loop dialog "45秒が経過しました"



匿名希望さん

リンク

2010/3/19(Fri) 18:03:15|NO.31405

わかりやすいソースをありがとうございます。

解決はしましたのですが、SYAMさんのソース上でラベル[@]って特殊なラベルなんですか?



ORZ

リンク

2010/3/19(Fri) 20:23:47|NO.31407

ローキャルラベルです。



SYAM

リンク

2010/3/19(Fri) 20:39:12|NO.31408

普通のラベルと違い、一つのスクリプトの中にいくつも書くことができて、ジャンプ元からは「ひとつ後」「ひとつ前」のような指定ができるもの です。



あり

リンク

2010/3/20(Sat) 10:48:36|NO.31424

>ラベル[@]って特殊なラベルなんですか?
ローカルラベルについての説明は
HSPマニュアルの【プログラミングマニュアル・基本仕様ガイド】内にある
【3. スクリプト記述の基本】の【11. ラベル】
の項にありますのでそちらを読んでください。



匿名希望さん

リンク

2010/3/20(Sat) 12:28:56|NO.31429

ありがとうございます。参考にします



GENKI

リンク

2010/3/20(Sat) 15:47:02|NO.31434

なんだか前にも同じようなレス書いたような気がします。過去ログにあるかも。
d3timerはtimeGetTimeと同じものだから、No.31404のinoviaさんが書いてるのと同じことなんですけどね。
まあ、APIとか知らなくてもHSPのマニュアルだけで出来るよ、という例。ということで。

#include "d3m.hsp" t = d3timer() *main redraw 1 : await 16 : redraw 0 : color 255, 255, 255 : boxf : color : pos 0,0 tm = (d3timer()-t)/1000 mes "経過時間:" + tm + "秒" if tm>15 : goto *owari goto *main *owari dialog "45秒が経過しました" stop



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