今回は2DSに入れたプチコン3号で作った3分タイマーのプログラムについて説明します。
前回は仕様とプログラムの入力をしました。
作ったプログラムの説明
説明
'タイマー
最初の行は、コメントの命令”‘”の後に、このプログラムの説明として、”タイマー”と入力しました。
後から見ても、このプログラムが何をするのか分かるように、いろいろ説明を最初に書いておくのがよいです。
また、処理の各ブロックが何をするのかを、それぞれ書くのが、のちにプログラムを修正したり、追加するのが、分かり易くなります。
初期設定/初期化
'サイショ
WIDTH 16
MATIJIKAN=3*60
MAENOTIME$=""
“WIDTH”命令は、画面(コンソール画面)の文字の大きさを変える命令です。この命令に続けて引数として、通常は”8″を、大きい時は”16″を設定します。ここでは大きくするので”16″とします。
また、変数”MATIJIKAN”と”MAENOTIME$”を初期化(=必要な値や言葉を入れておく)しています。
“MATIJIKAN”は、あとどのくらい待つかの待ち時間を秒にしたものを保存します。ここでは、3分にするので、3*60秒を設定します。
“MAENOTIME$”は、処理した時の時刻を保存します。ここでは何もない状態””を設定します。
メイン(メインループ)
'メイン
WHILE MATIJIKAN >= 0
“WHILE”命令は、引数の”MATIJIKAN >= 0″が成り立っているうちは、”WEND”命令の間をループします。
“MATIJIKAN”は、残りの待ち時間なので、残り時間が無くなるまでループすることになります。
メイン(前回処理した時の時刻と今の時刻が違っていたら、、、)
IF MAENOTIME$ != TIME$ THEN
“IF”命令で”MAENOTIME$ != TIME$”が成り立てば、次の行以下を”ENDIF”命令まで実行します。
“MAENOTIME$ != TIME$”のうち、”!=”とは、左と右の変数の中身(ここでは言葉)が違えば、成り立ちます。”TIME$”はシステム変数というもので、今の時刻を持っています。
“MAENOTIME$”には、最初””が入っているので、必ず”IF”命令の次の行を実行します。
メイン(時刻を表示したり、音を鳴らしたり、、、)
PRINT TIME$,MATIJIKAN; "ビョウマエ"
BEEP
DEC MATIJIKAN
MAENOTIME$=TIME$
“PRINT”命令は、画面(コンソール画面)に表示する命令です。ここでは、時刻と残り時間の秒数と、秒数であることが分かるように”ビョウマエ”を表示させます。
“BEEP”命令は、音を鳴らします。引数で音は変更できますが、ここではデフォルトの音(ビーという音)にします。
“DEC”命令は、引数の変数”MATIJIKAN”から1を引きます。これで残り時間が1、つまり1秒減ることになります。
“MAENOTIME$=TIME$”は、変数”MAENOTIME$”へ今の時刻を設定します。これで今処理した時刻が”MAENOTIME$”に入るので、これが変われば1秒立ったことが分かります。
メイン(“IF”命令の終わり)
ENDIF
“ENDIF”命令は、”IF”命令の終わりをわかるために置きます。
メイン(メインループの終わり)
WEND
“WEND”命令は、”WHILE”命令との間をループするために置きます。
時間が来た後の処理
'ジカンガキタ
TALK "ジカンガキマシタ"
“TALK”命令に引数として”ジカンガキマシタ”を設定して、「時間が来ました」としゃべらせます。
後始末
'アトシマツ
WIDTH 8
文字の大きさを元にするので、”WIDTH”命令に引数として、”8″を設定します。
あらら、おかしなところがある。。。
さて、プログラムを説明しているなかで、一つおかしなことになりそうな所を見つけました。
また、プログラムの作成モード(?)では、うまく動くのに、プログラムをファイルにしたものを動かすと、最後の”ジカンガキマシタ”が聞こえないというのがわかりました。
次回は、これらを直していきましょう。
では今回はここまで。
また次回をお楽しみに。
sammyの相方です。
時たま出てくることがあります。