トピック
たいたい★ taitai3434

アラーム機能

これにアラームをつけたいのですが まったくわかりません。 ヒントでいいので教えてください。
0そうだね
プレイ済み
返信[1]
親投稿
ヒント:MID$() VAL() さあ頑張って下さい。
1そうだね
プレイ済み
返信[2]
親投稿
TERA(LL) tera0413
(TMREADという方法も)
2そうだね
プレイ済み
返信[3]
親投稿
処理としては 1.アラームの時間を設定する 2.アラーム開始の時刻をおぼえる 3.アラーム開始の時刻からアラームの時間が過ぎていたら、アラーム処理 が必要になるので、3.をするには文字ではなく数値の計算が必要になります。 なので、TIME$は文字なので計算するには数値に変換が必要となります。 これをするには しょぼーんさん と TERRA(LL)さんが書いてある関数がヒントになるのでヘルプを見てみるといいかもしれません。 ちなみに時刻ではない方法として、 MAINCNT 'SmileBASIC起動時からのフレーム数(1/60秒単位) MILLISEC 'SmileBASIC起動時からのミリセカンド値 もあります。
1そうだね
プレイ済み
返信[4]
親投稿
PONガエル pokettto-1260-ze
文字列変数にTIME$を入れて IF THENで文字列変数の中身をほにゃららほにゃらすれば、つけれると思います
3そうだね
プレイ済み
返信[5]
親投稿
Mc mc014483
寝てから起きるまでずっとつけっぱなしか。電池(涙)
4そうだね
プレイ済み
返信[6]
親投稿
マギー M191246
「まったくわからない」 ということなので、ヒント。 6行目から14行目が メインでループしているので この中で時間を確認する条件式を作って 音を鳴らしたりすればいいと思います。
2そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
アラーム機能を付けるだけならば実は非常に簡単にできます。 例えば6時に鳴らしたい場合はINPUT命令で06:00と入力します。(時間と分を2桁で入力して、その間にコロンを入れるのを忘れずに!) 後はループ内でLEFT$を使ってTIME$の左側5文字を取り出しそれが入力した文字と一致した場合に鳴らせば良いだけです。 現状はアラーム機能を付けるということだけに絞り、TIME$を数値化して行う判定ははさらに高度な処理(例えば今から30分後にアラームを鳴らしたいとかアラームにスヌーズ機能を付けたいとか)が必要になってから行っても問題ありません。
1そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
アラーム機能を付けるに当たって初心者にとって一番難しい点といえばアラームを鳴らす判定処理を加えた後に発生する2つの問題点です。 まず1つ目の問題点はこのメインループは1秒間に何千、何万回と実行されているのでアラームと一致している1秒間は何千、何万回も音を鳴らそうとしてしまいます。 一致している1分間は強引にたくさん鳴らそうとするため雑音しか鳴りません。 これは適当な変数をフラグにしてアラームが鳴り始めたらそのフラグ(「現在アラームが鳴っているよフラグ」)をオンにすると改善できます。 フラグ変数をFとすれば「時間が一致、かつ、Fが0の時」アラームを鳴らしてFの値を1にすれば良いということです。 時間が一致しなくなったらフラグ変数を0に戻しましょう。
1そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
もう1つの問題は「アラームを止める」という場合にどうするかという問題です。 まずは鳴っているアラームをどうやって止めたら良いのかというとこのプログラムはすでに搭載されている「終わる」機能でアラームオフを代用できます。(BGMSTOPもしくはSNDSTOPを付ければOK) しかし、一旦アラームをセットしてしまうと「時計として動作中はその時刻にアラームが鳴ってしまうという問題がある」ので普通のアラーム付き時計と同じようにアラームのオンとオフの設定ができると良いかもしれません。 それはアラームをセットしているフラグ」を用意すれば解決できます。 これで(電源コードを挿しっぱなしにしておけば)プチコン3号をデジタルのアラーム付き時計として活用できますね!(目覚まし時計として活用するならば本体を閉じたら機能しなくなるため厄介ですが)
1そうだね
プレイ済み
返信[10]
親投稿
おちゃめ ochame_nako
ゲームやツールを作る場合はこのようなフラグ管理(オンとオフのスイッチ操作)はかなり重要になってきます。 覚えておくとこの先きっと役に立つでしょう。 あとループ内(ボタン入力等を行っているループ)ではVSYNCを入れてループのタイミングを一定にした方が不要な誤動作を起こさずに済むためオススメです。 VSYNCはループの先頭もしくは末尾に入れるのがベターです。
1そうだね
プレイ済み
返信[11]
親投稿
たいたい★ taitai3434
できました! ダウンロードしてみてください。
2そうだね
プレイ済み
返信[12]
親投稿
たいたい★ taitai3434
ツララさん、やってみます。
0そうだね
プレイ済み
返信[13]
親投稿
たいたい★ taitai3434
受け付け終了します。 ありがとうございました。
1そうだね
プレイ済み