毎日ログインボーナス スクリプト C++

概要

毎日ログインボーナスを実行するためのスクリプト

計算式

以下の条件を満たす時、trueを返すスクリプトを作成すれば毎日ログインボーナスの状態確認ができる。

過去にログインした時刻 < 現在時刻より過去の一番近いログイン更新時刻 <= 現在時刻

画像で説明

例1:「過去 < 更新1 <= 現在」が成り立つ
f:id:yasuaki-ohama:20151218135712j:plain:w300
例2:「過去 < 更新0 <= 現在」が成り立たない
f:id:yasuaki-ohama:20151218135713j:plain:w300
例3:「過去 < 更新0 <= 現在」が成り立たない
f:id:yasuaki-ohama:20151218135714j:plain:w300
例4:「過去 < 更新0 <= 現在」が成り立つ
f:id:yasuaki-ohama:20151218140340j:plain:w300

求め方

  1. 現在時刻を取得する。
  2. 現在時刻より過去の一番近いログイン更新時刻を求める。
  3. 過去にログインした時刻よりログイン更新時刻が未来であればtrueを返す。

gist.github.com

$ ls
DateUpdate.cpp
$ g++ -o  DateUpdate DateUpdate.cpp
$ ./DateUpdate 
読み込み失敗 ファイル LastLoginTime.txt が開けません。 0を返します。
Tue Dec 15 13:51:37 2015 現在時刻の表示
Thu Jan  1 09:00:00 1970 最後にガチャを行った時刻
Tue Dec 15 06:00:00 2015 年月日入り更新時刻
更新する
$ ./DateUpdate
Tue Dec 15 13:51:41 2015 現在時刻の表示
Tue Dec 15 13:51:37 2015 最後にガチャを行った時刻
Tue Dec 15 06:00:00 2015 年月日入り更新時刻
更新しない
$ vim LastLoginTime.txt
$ ./DateUpdate                     
Tue Dec 15 13:52:02 2015 現在時刻の表示
Mon Dec 14 10:04:57 2015 最後にガチャを行った時刻
Tue Dec 15 06:00:00 2015 年月日入り更新時刻
更新する
$ ./DateUpdate
Tue Dec 15 14:12:08 2015 現在時刻の表示
Tue Dec 15 13:52:02 2015 最後にガチャを行った時刻
Tue Dec 15 06:00:00 2015 年月日入り更新時刻
更新しない

その他

バイナリで保存したい場合

    ofs.write(( char * ) &currentTime, sizeof( long ) );//バイナリ保存
    while(!ifs.eof())
    {
      ifs.read( ( char * ) &d, sizeof( long ) );//バイナリ保存
    }