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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0125
Mitukiミリ秒単位のストップウォッチの続き14解決


Mituki

リンク

2015/1/25(Sun) 14:56:47|NO.67073

ミリ秒単位のストップウォッチ
これです。


*main redraw 0 color 0, 0, 0 : boxf font msgothic, 80 color 255, 128, 128 pos 15, 10 mes strf("%04d:%02d:%03d", a, b, c) redraw 1 x += 1 a = x / 60000 b = x \ 60000 / 1000 c = x \ 60000 \ 1000 / 14 await 1 goto *main stop

でどうでしょうかね



この記事に返信する


Hmario5000

リンク

2015/1/25(Sun) 14:58:16|NO.67074

HSPで、ミリ秒単位のストップウォッチを作りたいのですが、

*main redraw 0 color 0, 0, 0 : boxf font msgothic, 80 color 255, 128, 128 pos 15, 10 mes strf("%04d:%02d:%03d", a, b, c) redraw 1 x += 1 a = x / 60000 b = x \ 60000 / 1000 c = x \ 60000 \ 1000 await 1 goto *main stop
としたのですが、どうやら1ミリ秒に1回処理をしないようです。
どうすればいいでしょうか?




moritoshi

リンク

2015/1/25(Sun) 14:59:05|NO.67075

この方法だとパソコンによって時間が違ってきます。
時間取得で差をとったほうがいいです。



木村

リンク

2015/1/25(Sun) 14:59:38|NO.67076

 wait命令もawait命令も大体約1/60秒刻みで時間を取得するようです。
 解決方法としてはWin32APIのSleep等の外部関数を利用する方法が考えられます。以下に
f(飲茶中)様とえくー様のスクリプトへの転送を張っておきます。
http://hsp.tv/play/pforum.php?mode=all&num=32117
http://hsp.tv/play/pforum.php?mode=all&num=32155



arasi

リンク

2015/1/25(Sun) 15:00:39|NO.67077

あ14g6a5da6a



arasi

リンク

2015/1/25(Sun) 15:01:17|NO.67078

あwredsbrj12357jty46e7m

あrdspoapb amfdobgpairgb@ rtiab@rnegam@bp aemkhbor@a



Mituki

リンク

2015/1/25(Sun) 15:01:37|NO.67079

なに



kanahiron

リンク

2015/1/25(Sun) 15:51:11|NO.67080

え?これ5年前のスレッドに返事をしたいってことですか?

元スレ:ミリ秒単位のストップウォッチ
http://hsp.tv/play/pforum.php?mode=pastwch&num=33795


ミリ秒って0〜999の範囲なんですけどなんでわざわざ14で割っているのでしょうか
arasiさんとMItukiさんが同一人物にしか見えないのは気のせいでしょうか



alcane

リンク

2015/1/25(Sun) 19:28:05|NO.67083

回りくどい方法かもしれないですが 精度はさておき
標準命令の gettime を使って
計測開始時点での ミリ秒+(秒*1000)+(分*60000)+(時*3600*1000) を
計測終了時点での ミリ秒(ry から引けば いちおうは出ます。

ただ、日にちをまたぐと計算がおかしくなったりしますので その時は
日*24*3600*1000 を足したりしていけば いいんじゃないですかね。

あるいはあらかじめプラグインの類を探してはいかがですか。


これで、ストップウォッチは作れます。
精度を考えるなら onkeyとか使ったり
計算式の書き方で速度を考慮してはいかがですか。

いや、プラグイン探した方が早い。



沢渡

リンク

2015/1/25(Sun) 21:52:43|NO.67085

TimeGetTimeを使わず、gettimeだけで作ってみました。


//ミリ秒単位のストップウォッチ。 //左クリックでカウント開始・停止・再開 //停止中に右クリックでリセット #define gt gettime(6)*1000+gettime(7) font msgothic,80 time=0 stp=1 //1の場合は停止中 repeat stick key if key&256 { if stp=1 { bef=gt stp=0 } else { stp=1 } } if key&512 { if stp=1 : time=0 } if stp=0 { //カウント進行 now=gt gap=now-bef : if gap<0 : gap=gap+60000 bef=now time=time+gap if time>5999999 : time=5999999 //カンスト } min = time / 60000 sec = time \ 60000 / 1000 msec = time \ 60000 \ 1000 redraw 0 color 0, 0, 0 : boxf color 255, 128, 128 pos 15, 10 mes strf("%02d:%02d:%03d", min, sec, msec) redraw 1 await 1 loop



alcane

リンク

2015/1/25(Sun) 22:14:19|NO.67086

>>TimeGetTimeを使わず、gettimeだけで作ってみました。

確かに0切ったときは 数字足せばいいですよね・・・
無駄な読み込みで重くしてましたな・・・



Mituki

リンク

2015/1/26(Mon) 17:57:29|NO.67098

沢渡
を Ver 1.0 から Ver 1.1
にアップグレードいたしました。

//ミリ秒単位のストップウォッチ。 //左クリックでカウント開始・停止・再開 //停止中に右クリックでリセット title "STOPWATCH" screen 0,980,980 #define gt gettime(6)*1000+gettime(7) // 使い方表示 //49から font msgothic,80 time=0 stp=1 //1の場合は停止中 repeat stick key if key&256 { if stp=1 { bef=gt stp=0 } else { stp=1 } } if key&512 { if stp=1 : time=0 } if stp=0 { //カウント進行 now=gt gap=now-bef : if gap<0 : gap=gap+60000 bef=now time=time+gap if time>5999999 : time=5999999 //カンスト } min = time / 60000 sec = time \ 60000 / 1000 msec = time \ 60000 \ 1000 redraw 0 color 255, 255, 255 : boxf color 255, 128, 128 pos 15, 10 mes strf("%02d:%02d:%03d", min, sec, msec) redraw 1 await 1 loop
少しだけ変わりました(笑)



Mituki

リンク

2015/1/26(Mon) 18:02:13|NO.67099

変えてみて、

*main redraw 0 color 0, 0, 0 : boxf font msgothic, 80 color 255, 128, 128 pos 15, 10 mes strf("%04d:%02d:%03d", a, b, c) redraw 1 x += 8 a = x / 60000 b = x \ 60000 / 1000 c = x \ 60000 \ 1000 / 14 await 1 goto *main stop
になりました。



Mituki

リンク

2015/1/27(Tue) 18:19:35|NO.67125

これ

*main redraw 0 color 0, 0, 0 : boxf font msgothic, 80 color 255, 128, 128 pos 15, 10 mes strf("%04d:%02d:%03d", a, b, c) redraw 1 x += 8 a = x / 60000 b = x \ 60000 / 1000 c = x \ 60000 \ 1000 / 1 await 1 goto *main stop
000の
>0<0 0
がうごきました。



Mituki

リンク

2015/1/27(Tue) 18:22:28|NO.67126

めんどいのであおくしません。
*main
redraw 0
color 0, 0, 0 : boxf
font msgothic, 80
color 255, 128, 128
pos 15, 10
mes strf("%04d:%02d:%03d", a, b, c)
redraw 1
x += 8
a = x / 60000
b = x \ 60000 / 1000
c = x \ 60000 \ 10 / 1
await 1
goto *main
stop



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