【タイマー作り】二種類のタイマーを考えながら作ってみよう

スキルアップの練習
Scratch星人
Scratch星人

我が家にはGoogleHomeがあり「ちょっと昼寝をしたい時のアラーム(30分後にアラーム)」や「朝の目覚まし(明日8時にアラーム)」をお願いしています。

これらはそれぞれ声のかけ方が違います。

どのようなプログラムの仕組みになっているかを考えながら、二種類のアラームタイマーをスクラッチで作成してみましょう。

二種類のタイマーの仕様

今回作成するタイマーは「秒」まで設定すると、細かく大変になってしまうので「分」までで設定していきます。

何分後にアラーム

「5分後」や「30分後」など、わずかな設定時間のタイマーを作成してみます。

もし「2時間後」に設定したい場合は「120(分)」と入力するような仕様にします。

「ちょいアラーム」と呼ぶことにします。
難易度は☆2くらいです。

何時何分にアラーム

「7:30」や「21:40」など、午前と午後を区別しながら、「何時」と「何分」を入力するタイマーを作成してみます。

何日後までは想定せずに、最大値は23時間59分後とします。

「しっかりアラーム」と呼ぶことにします。
考えなければいけないことが多いので難易度は☆4.5くらいです。

Scratch星人
Scratch星人

ここまでの内容で「作れそう!」と思ったあなたは、ぜひ作成してみてください。

以下の内容は解説になりますので、なるべく自力で考えてから見るようにしてください。

「ちょいアラーム」の作り方

ちょいアラームはこれだけで出来てしまいます。

タイマーのブロックは、常に動き続けているので、時間を聞いた後にリセットすることがポイントです。

また、「答え*60」とすることによって、入力された「分」の数字を「秒」に変換しています。

この部分は最初、「答え*60=タイマー」としてみたのですが、正しく動作しなかったので、このようにしています。

もしかしたら、もっといい方法があるかもしれませんので、色々試してみて下さい。

「しっかりアラーム」の作り方

多くの変数を用意して、作成してみました。
ちょっと、力わざっぽいので、もっといい作り方があるかもしれません。

ここでのポイントは、時間も含めてすべてを「分」に変換していることです。

13時30分の場合、「13 x 60 + 30 = 810」となります。

こうする理由は、単位を「分」に揃えることで、計算をシンプルにするためです。

次のポイントは「_alarm」の変数です。

後ほど、「now」変数と「alarm」変数の差を比較して、タイマーを設定していくのですが、その前に一時的な仮変数として「_alarm」を用意しています。

なぜ仮変数なのかは、以下で解説します。

「_alarm – now > 0」と「でなければ」で条件を分かれさせています。

例えば、現在時刻が13:30だとします。
アラームの設定は以下の2通りが考えられます。

  • 14:30(1時間後):14:30(870)- 13:30(810)= 60
  • 1:30(12時間後):1:30(90)- 13:30(810) = -720

引き算の結果がマイナスになってしまう場合、少し加工が必要になります。

1:30を90ではなく、1470に変換して計算を進めます。

これらを「_alarm(仮変数)」を元に条件分岐し、正式な変数「alarm」に値を格納し、処理を実行していきます。

Scratch星人
Scratch星人

ここまでの解説ですが、言葉だと難しく感じるかもしれませんが、やっていることは単純なので、何度か読み返しつつ、他の時間なども変換してみることで理解が深まると思います。

まとめ

二種類のタイマーの作り方を紹介しました。

ここで解説した作り方が、答えではありません。
自分の力で考えて、作ることが出来たらそれが正解です。

この記事で皆さんにお伝えしたいことは「考えて作ることの大切さ」です。

ぜひ、一日一日「Keep Thinking」でプログラミングを楽しんでいきましょう(*^▽^*)

コメント

タイトルとURLをコピーしました