HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0921
2211時間で判定5未解決


2211

リンク

2012/9/21(Fri) 23:41:59|NO.49473

日付が変わるたびに(ifで日付が違った場合は) dialog を表示するプログラム。
を日付判定ではなく13時判定で行いたいのですが日付をifで判定するソースを組むのは簡単だったのですが
今回はアルゴリズムが思い浮かばず中々ソースを組めません・・・。
どのようにやればいいのでしょうか?回答よろしくお願いします。



この記事に返信する


暇人

リンク

2012/9/21(Fri) 23:57:37|NO.49475

日付が変ったら13時まで待つ
って感じで良いんじゃない?

メインループを止めずにやりたいなら
日付が変ったらフラグON
ON中は時間判定をする
13時ならフラグOFFにしてdialog

初日は自分でフラグONにしてやらないと
13時前に起動しても次の日まで13時判定されない



さか

リンク

2012/9/22(Sat) 01:09:05|NO.49477

これと言うこと?
repeat
if gettime(4)==13 and gettime(5)==0 and gettime(6)==0{
dialog "13時だよ"
}
wait 100
loop



FunnyMaker

リンク

2012/9/22(Sat) 10:20:09|NO.49481

これでどうでしょうか。PCの時計を変えるのが面倒で、テストはしていませんが...。

上手く動かなかったらごめんなさい。


*start Day = gettime(3);ループ内で、前回の値として参照する、「日付」を初期化。当然だがこれが変わったとき、日が変わっている。 flag_NewDay = 1;新しい日になっているかどうかのフラグ。最初(=ソフト起動時)は手動でONに。 *main while num1_main = gettime(3);今この瞬間の日付を取得。これが「Day」変数の内容と違っていたら、日付が変わったということ。ループは1秒周期なので、日付が変わってから少なくとも 「1秒 + (その他の処理にかかる時間)」 以内に日付が変わったことを検知できる。 if num1_main ! Day : Day = num1_main : flag_NewDay = 1;日付が変わっていたら、「ループ内で、前回の値として参照する日付 = 「Day」変数」 を更新し、同時に新しい日になっていることを宣言する。 if (flag_NewDay = 1)&(gettime(4) = 13) : gosub *action;条件「13時 かつ 今日始めての検知」が満たされている場合のみアクションを起こす。 wait 100 wend *action dialog "13時になりました。" /////////////////////// ;何かやりたいことをやる。 /////////////////////// flag_NewDay = 0;最後に、今日の分の13時判定は使い切った(今日はもう13時判定しなくていい)ということを記憶しておく。 ;帰る return



FunnyMaker

リンク

2012/9/22(Sat) 10:21:32|NO.49482

↑ 改行するのを忘れていました。見づらくしてしまってすみません。



ヂオン

リンク

2012/10/3(Wed) 04:54:53|NO.49700

いまさらですが。


*@ h=gettime(4) if(h!=b) and (h==13){ b=h dialog "十三時になりました" } await 2000 // 二秒毎に判断します goto*@b



ONION software Copyright 1997-2023(c) All rights reserved.