ストップウォッチを作りたい

ストップウォッチを作りたいです。
ループ文で1秒経過するごとにFUKIDASIで時間を表示するところまではできました。
ただ、FUKIDASI中に別の処理をするのはどうすればよいのかわかりません。
SLCTBOXと、タイムアウト秒設定を使いましょう

FUKIDASIによる時間制御まで来ているのは、
とってもよいアプローチです。

時間の表示までは出来ているので、スタートとストップボタンも併せて出すようにしましょう。

と言ってもFUKIDASI関数にはそのような機能はないので、
SLCTBOX関数の出番です。

まずはただの時間表示スクリプト

ご質問にあるようなループ文とFUKIDASIによる時間表示スクリプトは以下の通りです。

TIME = 0
WHILE TRUE
 TIME = TIME + 1
 SLEEP(1)
 FUKIDASI(TIME + "秒経過",0,0,0,20)
 //一応10秒経ったら終了
 IF TIME > 10 THEN EXIT
WEND

スクリプト

では、ストップウォッチを作りましょう。
ループ文の中にSLCTBOXを記述します。
これだと、スクリプトが選択肢が出てきた所で、
進まないんじゃないのかという懸念がありますよね。
でも大丈夫、タイムアウト秒の設定というものがあり、
指定時間を経過すると次のステップに進むことができます。
スクリプトは以下のようになります。

//開始時間
START = GETTIME()
//スタート、ストップの状態を判別
CNTFLG = 1

WHILE TRUE
  //開始時間 - 現在時間で経過時間取得
  NOW = GETTIME() - START 

  //ストップウォッチ、CNTFLG=0の場合はタイムアウト無し=ストップ状態
  SELECT SLCTBOX(SLCT_BTN,CNTFLG,NOW + "秒","スタート","ストップ")

    //スタート
    CASE SLCT_1
      //再スタートはリセット
      START = GETTIME()
      CNTFLG = 1

    //ストップ
    CASE SLCT_2
      CNTFLG = 0

    SELEND
WEND

どうでしょう。期待通りの動きをしていますか。
まずはスクリプト起動時に時間カウントがスタートし、秒数が表示されます。
ストップを押せば、カウントは止まります。
そして再び、スタートをクリックすれば、時間がリセットされてカウントがリスタートします。

しかし、上記のスクリプトでも
少し不親切な気がします。
時間計測中(スタート中)にスタートを押した場合はどうなるでしょうか。
強制的に終了したい場合はどうでしょうか。
少しスクリプトを親切にしてみましょう。
以下のようになります。


続きは、ログインもしくは、登録してください



このページの先頭へ