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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0803
Mituki (投稿者削除)4解決


Mituki

リンク

2015/8/3(Mon) 01:40:34|NO.70419

この記事は投稿者により削除されました。
2015/8/13(Thu) 00:57:42



この記事に返信する


SqOc

リンク

2015/8/3(Mon) 02:16:48|NO.70421

そもそもwaitだと誤差が出ます。
gettimeの方がいいと思います。
あと、これだと表示が秒単位ではなく、1/100秒単位なので、waitならwait100
です。
変数が長いのは、プログラムに問題はありませんが、もっと大きなもになった時に
混乱を招きかねないので、あまりおすすめはできません。

あと一つ質問ですが、冒頭のincludeはなんですか?



玄冬

リンク

2015/8/3(Mon) 03:26:42|NO.70422

今ひとつ、どのような要望・提案なのかがわかりかねます。
(作ったものを紹介するだけなら宣伝や雑談ではないでしょうか?)

>SqOcさん
>あと一つ質問ですが、冒頭のincludeはなんですか?

初期付属のasファイルを使って、音を鳴らすのにビープ音を用いているのです。

ビープ音を使うとヘッドフォンを使用していても、スピーカーから音が出る場合があるので
、使用は控えた方が良いと思います。

また、タイマーということですが、コンパイルすると時間が設定できないのでは
用をなさないのではないでしょうか?

拙作で申し訳ないですが、昔作ったタイマーのスクリプトを載せておきますので
お友達ともども参考にして下されば幸いです。
(別途pipipi.wavという名のファイルが必要になります。)

;###################################################################################################
;ヘッダ ;################################################################################################### ;================================================= ;マクロ ;================================================= #pack "pipipi.wav" #define MODE_TIMER -1 #define MODE_COUNT 0 #define MODE_WATCH 1 #define MODE_STOP 2 #define NOW (3600 * gettime(4) + 60 * gettime(5) + gettime(6)) ;================================================ ;変数初期化 ;================================================ sdim v_temp ;一時的利用用変数 mmload "pipipi.wav", 0, 1 ;================================================= ;画面初期化 ;================================================= ;------------------------ ;表示画面初期化 ;------------------------ screen 0, 400, 240 ;{ title "タイマー" gsel 0, 2 font msgothic, 30 pos 0, 0 objmode 2 objsize 160, 50 button "START", *MODE_SET pos 335, 0 objmode 1 objsize 65, 25 button "RESET", *RESET_TIME objsize 25, 25 repeat 8 pos cnt * 25 + (cnt / 2) * 30 + 15 + (cnt / 4) * 80, 210 if cnt \ 2 : button "-", *SET_TIME : else : button "+", *SET_TIME loop font msgothic, 160 ;} goto *RESET_TIME stop ;################################################################################################### ;サブルーチン ;################################################################################################### ;================================================= ;設定 ;================================================= ;------------------------ ;時間リセット ;------------------------ *RESET_TIME dim v_MODE v_MODE = MODE_WATCH dim v_START v_START = 0 dim v_TIME v_TIME = 0 gosub *sub_WRITE_TIME objenable 0, 1 objenable 1, 1 stop ;------------------------ ;モード切替 ;------------------------ *MODE_SET if abs(v_MODE) = 1 { ;計測開始 v_temp = v_MODE v_MODE = MODE_COUNT repeat 5,1 objenable cnt, 0 loop objprm 0, "STOP" if v_temp = MODE_TIMER : goto *TIMER_START : else : goto *WATCH_START } else { ;計測停止 if v_MODE = MODE_STOP : mmstop v_MODE = MODE_WATCH repeat 5, 1 objenable cnt, 1 loop objprm 0, "START" stop } stop ;================================================= ;タイマー部 ;================================================= ;------------------------ ;時間設定 ;------------------------ *SET_TIME v_MODE = MODE_TIMER v_temp = stat - 2 if v_temp \ 2 { v_TIME -= 600 * ((v_TEMP / 2) = 0) + 60 * ((v_TEMP / 2) = 1) + 10 * ((v_TEMP / 2) = 2) + ((v_TEMP / 2) = 3) } else { v_TIME += 600 * ((v_TEMP / 2) = 0) + 60 * ((v_TEMP / 2) = 1) + 10 * ((v_TEMP / 2) = 2) + ((v_TEMP / 2) = 3) } v_TIME \= 3600 if v_TIME < 0 : v_TIME = 0 ;マイナスは無し gosub *sub_WRITE_TIME stop ;------------------------ ;計測開始 ;------------------------ *TIMER_start v_START = NOW + v_TIME ;------------------------ ;計測ループ ;------------------------ *TIMER_loop v_TIME = v_START - NOW gosub *sub_WRITE_TIME await 0 if 0 < v_TIME : goto *TIMER_loop : else { mmplay 0 : v_MODE = MODE_STOP } stop ;================================================= ;ストップウォッチ部 ;================================================= ;------------------------ ;計測開始 ;------------------------ *WATCH_start v_START = NOW - v_TIME ;------------------------ ;計測ループ ;------------------------ *WATCH_loop v_TIME = NOW - v_START gosub *sub_WRITE_TIME await 0 goto *WATCH_loop stop ;================================================= ;表示 ;================================================= ;------------------------ ;表示 ;------------------------ *sub_WRITE_TIME redraw 2 color $FF, $FF, $FF : boxf pos 0, 50 color mes "" + strf("%02d", v_TIME / 60) + ":" + strf("%02d", v_TIME \ 60) redraw 1 return



リンク

2015/8/3(Mon) 08:44:06|NO.70428

1. スクリプトが雑
2. 画面がちらつく
3. 秒単位が好い加減

修正

width 230,80:title "簡易タイマー" mes "残り時間を設定して下さい。" input time,100,25,4 objsize 100,25:button "開始",*start pos 103,22:mes "秒" stop *start times = int(time) if times=0:stop cls s=times repeat if s=0:break redraw 0 color 255,255,255 :boxf:color 0,0,0:pos 0,0 mes "残り時間"+s+"秒" redraw 1 s-1 wait 100 loop dialog "終了" end



SqOc

リンク

2015/8/3(Mon) 19:52:51|NO.70437

玄冬回答ありがとうございました。
ビープ音について、完全に忘れていました。
あとなんか本格的になってますねw



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