子供からインスタントラーメンが出来るのを待つ、例えば3分タイマーを作ってほしい、2DSに入れたプチコン3号でできないかとお願いがありました。
とりあえず作ることにしました。
どんなものを作るか仕様決める
ざっと、頭の中でどんな仕様にするか考えてみます。
- 3分経ったら音を鳴らそう。
- 一秒毎に時刻と残り時間を表示しよう。
- その時にも音を鳴らそう。
サンプルや参考資料を探す
あと、参考になるような情報がないか、YahooやGoogleで調べたりしました。
すると、プチコン.NETという非公式ながらSmile BASICの各命令が詳しく載っているHPが見つかりました。
ここでしゃべる命令があり、また文字を大きく表示できることが分かったので、少し仕様を変えました。
仕様変更、仕様追加
☆太字が仕様変更や仕様を追加したところです。
- 3分経ったら音を鳴らそう。
→3分経ったら「時間になりました」としゃべらせよう。 - 一秒毎に時刻と残り時間を表示しよう。
- その時にも音を鳴らそう。
- 表示する文字は大きくしよう。終了したら元に戻そう。
大まかなプログラムの流れを考える
ざっくり仕様を決めると、次はプログラムの流れを考えます。
- 最初は、実際に動き出す前に、表示する文字を大きくするというような設定をしたり、変数(値や言葉を入れる入れ物)を用意したり、その変数に値や言葉を入れたりします。
変数としては、まず、”待ち時間”が必要ですね。
他の変数が必要かはメインの処理を考えてからにします。 - 次にメインの処理として、時間が来るまで待つようにして、1秒毎に時刻と残り時間を表示して音も鳴らすようにします。
- 最後に、時間が来てメインの処理を終わったら、「時間になりました」としゃべらせて、また後始末として画面を元に戻します。
メインのプログラムの流れを考える
メインの処理をもう少し細かくします。
- まずは、変数としての”待ち時間”が0以上であれば、メインの処理を続けることにします。
- 前回処理した時の時刻と今の時刻が違っていたら、1秒経っているので、
今の時刻と”待ち時間”を表示して、音を鳴らします。
そして、”待ち時間”を1減らし、今の時刻を記録しておきます。 - もし、前回処理した時の時刻と今の時刻が同じだったら何もしないでおきます。
- メインの処理としては、これでおしまいです。
変数としては、今の時刻と比較するために”処理した時の時刻”が必要なこととが分かりました。
プログラムにする(コーディング)
では、これをSmile BASICのプログラムにしてみましょう。
'タイマー
'サイショ
WIDTH 16
MATIJIKAN=3*60
MAENOTIME$=""
'メイン
WHILE MATIJIKAN >= 0
IF MAENOTIME$ != TIME$ THEN
PRINT TIME$,MATIJIKAN; "ビョウマエ"
BEEP
DEC MATIJIKAN
MAENOTIME$=TIME$
ENDIF
WEND
'ジカンガキタ
TALK "ジカンガキマシタ"
'アトシマツ
WIDTH 8
☆一部 プチコンの表示と異なるところがあります。
動かしてみる/保存する
入力はEDITモードにして入力します。
入力が終わったら、DIRECTモードにして実行してみましょう。
プログラムの実行は”RUN”コマンドです。
どうでしょうか。
3分タイマーになったでしょうか。
あとは、プチコン3号を終わらせてもプログラムが消えないように、”SAVE”コマンドで保存しておきましょう。
次回はプログラムの説明をしようと思います。
では今回はここまで。
また次回をお楽しみに。
sammyの相方です。
時たま出てくることがあります。