スクリプト言語の HSP については、公式ホームページの「HSPTV!」をどうぞ。(戻る)
100円ショップで売ってそうなミニ・タイマー&ストップウォッチを真似てみました。
表示が「00:00」のときに[START]ボタンを押すとストップウォッチ機能になり、
テンキーで入力してから[START]ボタンを押すとキッチンタイマー機能になります。
このフリーソフトは、2019年07月13日に株式会社 Vector に登録、その後の2019年07月24日に公開されました。
詳しい事は「[HSP]キッチンタイマー」を読んで下さい。
スクリーン・ショット
基本情報
- 【名前】キッチンタイマー Version 1.0.0
- 【環境】Windows XP、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 10
- 【機種】DOS/V互換機
- 【種別】フリーソフト
- 【言語】HSP(Ver.3.51)
- 【作者】科学太郎
※ダウンロードは、上記の【キッチンタイマー】をクリックして下さい。
開発中のソースコード(Ver.0.50)
下記のソースコードは、開発中の基本サンプル・ソースです。
そのため株式会社 Vector で公開してる「キッチンタイマー」のソースコードではありません。
公開中の「キッチンタイマー」は、下記のソースコードをもとに次の様なものが追加されてます。
- デザイン面の強化
- マウス処理の追加
- 画面外補正の追加
- 画面端吸着の追加
- 最前面表示の追加
- 色選択メニューの追加
//------------------------------------------------------------------------------ // キッチンタイマー by 科学太郎 //============================================================================== // 新規作成日:2019-07-10 (水) 23:15:00 // 最終更新日:2019-07-11 (木) 02:12:00 //------------------------------------------------------------------------------ #cmpopt varinit 1 #packopt hide 1 #packopt name __FILE__ # #include "User32.as" #include "Kernel32.as" //-------------------------------------- // 記号定数(API定数) //-------------------------------------- #const global NULL 0 #const global WM_CLOSE $00000010 #const global WM_TIMER $00000113 #const global WM_LBUTTONUP $00000202 #const global WM_RBUTTONUP $00000205 #const global WM_SYSKEYDOWN $00000104 # #const global GWL_STYLE $FFFFFFF0 #const global BS_MULTILINE $00002000 # #const global VK_F01 $00000070 #const global VK_F02 $00000071 #const global VK_F03 $00000072 #const global VK_F04 $00000073 #const global VK_F05 $00000074 #const global VK_F06 $00000075 #const global VK_F07 $00000076 #const global VK_F08 $00000077 #const global VK_F09 $00000078 #const global VK_F10 $00000079 #const global VK_F11 $0000007A #const global VK_F12 $0000007B //-------------------------------------- // 記号定数 //-------------------------------------- #const WID_MAIN (0) ;ウインドウID #const TID_STOPWATCH (1) ;タイマーID #const TMS_STOPWATCH (100) ;タイマー間隔(ms) //-------------------------------------- // 列挙定数(ボタンID) //-------------------------------------- #enum BID_KEY1=0 #enum BID_KEY2 #enum BID_KEY3 #enum BID_KEY4 #enum BID_KEY5 #enum BID_KEY6 #enum BID_KEY7 #enum BID_KEY8 #enum BID_KEY9 #enum BID_START #enum BID_KEY0 #enum BID_STOP //-------------------------------------- // 記号定数(サイズ) //-------------------------------------- #const FONT_SIZE (66) #const FONT_HALF (FONT_SIZE/2) # #const MARGIN_XSIZE (20) #const MARGIN_YSIZE (20) # #const SPACE_XSIZE (20) #const SPACE_YSIZE (20) # #const PUSH_XSIZE (50) #const PUSH_YSIZE (50) # #const DISP_BORDER (3) #const DISP_XSIZE ((PUSH_XSIZE+SPACE_XSIZE)*3-SPACE_XSIZE) #const DISP_YSIZE (80) # #const NUMB_XPOS ((DISP_XSIZE-5*FONT_HALF)/2) #const NUMB_YPOS ((DISP_YSIZE- FONT_SIZE)/2) # #const WINDOW_XSIZE (MARGIN_XSIZE*2+DISP_XSIZE) #const WINDOW_YSIZE (MARGIN_YSIZE*2+DISP_YSIZE+(PUSH_YSIZE+SPACE_YSIZE)*4) //-------------------------------------- // 記号定数(桃色) //-------------------------------------- #define RGB_BACK_TXCOLOR $66,$00,$00 #define RGB_BACK_BKCOLOR $DD,$66,$99 #define RGB_DISP_LTCOLOR $FF,$00,$66 #define RGB_DISP_DKCOLOR $99,$00,$33 #define RGB_MOJI_TXCOLOR $FF,$00,$66 #define RGB_MOJI_SHCOLOR $66,$00,$33 //-------------------------------------- // メイン部 //-------------------------------------- *Init ;ストップウォッチ dim nStart ;開始時間(ms) dim nCount ;経過時間(ms) dim bMode ;モード状態(0=停止,1=計測中) ;キッチンタイマー dim nPreset ;タイマー時間(ms) dim nMin ;タイマー要素(分) dim nSec ;タイマー要素(秒) dim nMSec ;タイマー要素(ミリ秒) dim bInput ;数字キー状態(0=なし,1=入力中) *Main screen WID_MAIN,WINDOW_XSIZE,WINDOW_YSIZE,SCREEN_NORMAL|SCREEN_FIXEDSIZE|SCREEN_HIDE syscolor 15:boxf:color:title "科学太郎" SetTimer hWnd,TID_STOPWATCH,TMS_STOPWATCH,NULL ;設定 oncmd gosub *OnTimer, WM_TIMER oncmd gosub *OnLButtonUp, WM_LBUTTONUP oncmd gosub *OnRButtonUp, WM_RBUTTONUP oncmd gosub *OnSysKeyDown, WM_SYSKEYDOWN onkey gosub *OnKeyBoard onexit gosub *OnQuit ;配置 s="1","2","3","4","5","6","7","8","9","START","0","STOP\nRESET" objsize PUSH_XSIZE,PUSH_YSIZE objmode 2 foreach s if(cnt==BID_START)or(cnt==BID_STOP):n=16:else:n=40 x=(cnt\3)*(PUSH_XSIZE+SPACE_XSIZE)+(MARGIN_XSIZE) y=(cnt/3)*(PUSH_YSIZE+SPACE_YSIZE)+(MARGIN_YSIZE+DISP_YSIZE+SPACE_YSIZE) pos x,y:font "HG明朝E",n:button gosub s(cnt), *PushExecute h=objinfo_hwnd(stat) GetWindowLong h,GWL_STYLE SetWindowLong h,GWL_STYLE,stat|BS_MULTILINE loop objmode 1 ;表示 font MSGOTHIC,FONT_SIZE:DrawDisplay gsel WID_MAIN,1 stop //-------------------------------------- // タイマー・イベントの処理 //-------------------------------------- *OnTimer if(wParam==TID_STOPWATCH){ redraw 0 DrawDisplay redraw 1 } return 0 //-------------------------------------- // ディスプレイの描画 //-------------------------------------- #deffunc DrawDisplay ;ストップウォッチ if(bMode):n=(nCount+(GetTickCount()-nStart)):else:n=nCount ;キッチンタイマー if(nPreset){ n=(nPreset-n) if(n<0):CmdReset:dialog "時間ですよ~。",0,"確認":return } ;分離 if(bInput==0){ nMSec =(n\1000) :n/=1000 nSec =(n\60) :n/=60 nMin =(n\100) :n/=100 } ;作成 if(bMode==0):c=':':else:if(nMSec<500):c=':':else:c=$20 s=strf("%02d%c%02d",nMin,c,nSec) ;描画 cx=(MARGIN_XSIZE) cy=(MARGIN_YSIZE) ex=(MARGIN_XSIZE+DISP_XSIZE-1) ey=(MARGIN_YSIZE+DISP_YSIZE-1) ;表示器 n=DISP_BORDER color RGB_BACK_BKCOLOR:boxf color RGB_DISP_LTCOLOR:boxf(cx+0),(cy+0),(ex-0),(ey-0) color RGB_DISP_DKCOLOR:boxf(cx+n),(cy+n),(ex-n),(ey-n) ;数字 color RGB_MOJI_SHCOLOR:pos(cx+NUMB_XPOS+2),(cy+NUMB_YPOS+2):mes s color RGB_MOJI_TXCOLOR:pos(cx+NUMB_XPOS+0),(cy+NUMB_YPOS+0):mes s return //-------------------------------------- // プッシュボタンの処理 //-------------------------------------- *PushExecute switch(stat) ;数字キー case BID_KEY0: SetTenKey 0 :swbreak case BID_KEY1: SetTenKey 1 :swbreak case BID_KEY2: SetTenKey 2 :swbreak case BID_KEY3: SetTenKey 3 :swbreak case BID_KEY4: SetTenKey 4 :swbreak case BID_KEY5: SetTenKey 5 :swbreak case BID_KEY6: SetTenKey 6 :swbreak case BID_KEY7: SetTenKey 7 :swbreak case BID_KEY8: SetTenKey 8 :swbreak case BID_KEY9: SetTenKey 9 :swbreak ;実行キー case BID_START: CmdStart :swbreak case BID_STOP: CmdResetStop :swbreak swend return //-------------------------------------- // スタート/ストップの処理 //-------------------------------------- #deffunc CmdStartStop if(bMode):CmdStop:else:CmdStart return //-------------------------------------- // ストップ/リセットの処理 //-------------------------------------- #deffunc CmdResetStop if(bMode):CmdStop:else:CmdReset return //-------------------------------------- // スタートの処理 //-------------------------------------- #deffunc CmdStart if(bInput){ ;補正 nMin =limit(nMin,0,99) nSec =limit(nSec,0,59) nMSec =0 ;合成 nPreset =(nMin*60+nSec)*1000 nStart =0 nCount =0 bMode =0 bInput =0 } if(bMode==0){ bMode=1:nStart=GetTickCount() } return //-------------------------------------- // ストップの処理 //-------------------------------------- #deffunc CmdStop if(bMode){ bMode=0:nCount+=(GetTickCount()-nStart) } return //-------------------------------------- // リセットの処理 //-------------------------------------- #deffunc CmdReset if(nStart==0)and(nCount==0)and(bMode==0){ nPreset =0 nMin =0 nSec =0 nMSec =0 bInput =0 } else{ nStart =0 nCount =0 bMode =0 } return //-------------------------------------- // 全リセットの処理 //-------------------------------------- #deffunc CmdClear ;ストップウォッチ nStart =0 nCount =0 bMode =0 ;キッチンタイマー nPreset =0 nMin =0 nSec =0 nMSec =0 bInput =0 return //-------------------------------------- // 数字キーの入力 //-------------------------------------- #deffunc SetTenKey int _ten_ if(bMode):return ;入力 nPreset=(nMin*100+nSec) nPreset=(nPreset*10)+(_ten_) nPreset=(nPreset\10000) ;分離 nMSec =(0) nSec =(nPreset\100):nPreset/=100 nMin =(nPreset\100):nPreset/=100 bInput =1 return //-------------------------------------- // プリセットの設定 //-------------------------------------- #deffunc SetPreset int _m_,int _s_ if(bMode):return ;代入 nMin =limit(_m_,0,99) nSec =limit(_s_,0,99) nMSec =0 bInput =1 return //-------------------------------------- // アップ・ダウンの設定 //-------------------------------------- #deffunc SetUpDown int _m_,int _s_ if(bMode):CmdStop:return ;計算 nMin +=(_m_):nMin\=100 nSec +=(_s_):nSec\=100 nMSec =0 if(bInput):return ;補正 nMin \=100 nSec \=60 ;合成 nPreset =(nMin*60+nSec)*1000 nStart =0 nCount =0 bMode =0 return //-------------------------------------- // スタート/ストップの処理 //-------------------------------------- *OnLButtonUp CmdStartStop return 0 //-------------------------------------- // ストップ/リセットの処理 //-------------------------------------- *OnRButtonUp CmdResetStop return 0 //-------------------------------------- // [F10]キーの処理 //-------------------------------------- *OnSysKeyDown if(wParam==VK_F10){ SetPreset 10,0 CmdStart } return 0 //-------------------------------------- // キーボードの割り込み処理 //-------------------------------------- *OnKeyBoard ;[F01]~[F12]キー if(VK_F01<=wParam)and(wParam<=VK_F12){ SetPreset(wParam-VK_F01+1),0 CmdStart return } ;[数字]キー if('0'<=iParam)and(iParam<='9'){ SetTenKey(iParam-'0') return } ;その他 if(iParam==$0D):CmdStartStop :return;[RET]スタート/ストップ if(iParam==$20):CmdResetStop :return;[SPC]ストップ/リセット if(iParam==$1B):CmdClear :return;[ESC]全クリア if(iParam=='C'):CmdClear :return;[ C ]全クリア if(iParam=='M'):SetUpDown 1,0 :return;[ M ]分アップ if(iParam=='S'):SetUpDown 0,1 :return;[ S ]秒アップ if(iParam=='Q'):PostMessage hWnd,WM_CLOSE,0,0 :return;[ Q ]終了 return //-------------------------------------- // 終了時の割り込み処理 //-------------------------------------- *OnQuit oncmd 0 KillTimer hWnd,TID_STOPWATCH end return //------------------------------------------------------------------------------ // End of sample356.hsp //------------------------------------------------------------------------------
- 上記のソースコードを HSP のスクリプト・エディタにコピー&ペーストして「F5」キーを押すと実行されます。
- 同様にコピー&ペーストして「名前を付けて保存」した後に「F9」キーを押すと実行ファイルが作成されます。
こんなに探し回って分かりました、これは素晴らしいと思います!!
私の希望は「音源の種類」だけでございます…
お忙しいと思いますが、是非宜しくお願いしますm(__)m
同感です。
> 是非機能追加のご検討宜しくお願いしますm(__)m
そのつもりでバージョン・アップ時に設定ウインドウを設けることにしてます。
・やっと「キッチンタイマー」が公開されました
http://hsp.tv/play/pforum.php?mode=all&num=87945
↑
こちらの掲示板でも同じような要望がありました。
いろいろと見落としていた機能があり、見直す必要があるのため、
今年の12月31日までには、バージョン・アップする予定です。
ほかにも要望がありましたら上記の掲示板に書き込むか、
このページのコメントに書き込んでください。
ただし、なるべくシンプルにしたいため、
すべての要望を取り入れるわけではありません。
参考にしたいので意見を募集します。という感じです。
バージョン・アップした場合は、このページのコメントで報告します。
以上。
はじめまして。m(__)m
PC用としてテンキー入力出来、且つシンプルなソフトを探しており辿り着きました「キッチンタイマー」
理想に近いソフトなのですが・・・一点だけ要望があります。
それは、アラーム音の種類です。
Windowsベースのあまりにもシンプルで短い音源なので、出来れば出来れば2~3種類くらいの中から選べるようにして欲しいです。
「ポーン」というデフォルトの音では、少しウトウトしてたり、よそ事をしていたら全く気付きません(^_^;)
是非機能追加のご検討宜しくお願いしますm(__)m