;変数 mode=0;モード(0時計 1タイマー) breaktimer=0;タイマー開始後の中止をチェックする変数 timelimit=0;タイマーの秒数の入力ボックス用変数 ;画像の準備 buffer 1 picload "number.png" ;★サウンドの準備 mmload "alt.wav",0 ;メインウインドウを設定 gsel 0 title "clock" width 16*12,32 gmode 2,16,32 ;ずっと同じ設定なのでここでセット *startclock ;時計モードの開始位置 ;画面の初期化も含む clrobj pos 16*11,0 objsize 16,32 button gosub "",*timeron ;モードを0(時計)にしておく mode=0 repeat ;タイマーボタンが押されたかチェック if mode==1 { break } ;時刻更新 hor=gettime(4) if hor<12 { time="<" }else{ time(0)=">" } if hor>12 { hor-=12 } time+=strf("=;%02d:%02d:%02d",hor,gettime(5),gettime(6)) gosub *drawtime await 1000 loop *settimer ;タイマーボタンが押されるとループを抜けて ;自動的にここへ来る ;タイマー画面の作成 ;ウインドウをまっさらにする time="" : gosub *drawtime ;オブジェクト clrobj pos 0,0 objsize 16*6,32 font msgothic,24 objmode 2 input timelimit; pos 16*6,0 objsize 16*5,32 button "strat",*starttimer pos 16*11,0 objsize 16,32 button gosub "",*startclock; stop *starttimer ;タイマースタート! ;キャンセルボタン表示 clrobj pos 0,0 pos 16*11,0 objsize 16,32 button gosub "",*canceltimer breaktimer=0;キャンセル用の変数を一応0に ;タイマースタート repeat timelimit ;時刻更新 i=timelimit-cnt time=strf("%04d:%02d",i/60,i\60) gosub *drawtime ;タイマーのキャンセルを監視 if breaktimer==1 { break } await 1000 loop ;途中で中止されずにループを終了した場合のみ ;アラームを鳴らす if breaktimer==0 { mmplay 0 ;★サウンド再生 dialog "時間です",1,"timer" } goto *settimer ;--------------------------------ここから先サブルーチン *canceltimer ;タイマー開始後、キャンセルされた場合に ;breaktimer=1とするだけ breaktimer=1 return *timeron ;タイマーモードのボタンが押されたことを ;変数に記録するだけのルーチン ;modeを1(タイマー)にする mode=1 return *drawtime ;timeに書かれた文字列を画像でウインドウに表示する ;(<がA,=がm,>がP,スペースが;) redraw 0 color 185,122,87 boxf repeat strlen(time); pos 16*cnt,0 : gcopy 1,16*(peek(time,cnt)-'0'),0 loop redraw 1 return