プチコン3号でプログラム:適当な3分タイマー(2)

前回、子供からお願いされた3分タイマーを2DSに入れたプチコン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″を設定します。

あらら、おかしなところがある。。。

さて、プログラムを説明しているなかで、一つおかしなことになりそうな所を見つけました。
また、プログラムの作成モード(?)では、うまく動くのに、プログラムをファイルにしたものを動かすと、最後の”ジカンガキマシタ”が聞こえないというのがわかりました。
次回は、これらを直していきましょう。

では今回はここまで。
また次回をお楽しみに。

スポンサーリンク
レクタングル広告大