ダークキング強さつぶやきBOTはじめました

「ぼくは大きくなったらダークキングになるんだっ!」
「えっ」

ダークキング?

Vジャンプの魔物仮面を付けたかったのですが、課金NGプレイが信条ですので。。

さて、以前作ったレグナード強さつぶやきBOT君ですがダークキングの強さもTwitterでつぶやくようにしました。

こんな感じでつぶやきます。

twitter例

ちなみに、レグと違ってダークキングって1→2→3→4→1→2と規則的に強さが変わるみたいですね。

ダークキング強さ

そこで学生の頃から算数がニガテな文系のみえちょん。
どうやったら強さを計算して出せるのか、考えてみました。

一応UNIXコマンドでやってるので、MacとかLinuxだとすぐに試せますね。
Windowsではbashはネイティブではサポートされてないので、cygwinを入れる必要があります。
しかし、Windows10では8/2の大型アップデートでbashがネイティブサポートされます

CASE1 一日毎に1ずつ加算していく


まずは適当なファイルに1を入れておく。

$ echo 1 > tmp
$ cat tmp
1

そのファイルの数字を1加算するようにして、5になった場合は1にリセットするようにする。

$ expr cat tmp + 1 > tmp ; if [ cat tmp -ge 5 ]; then echo 1 > tmp

適当に言葉を入れるとこんな感じになる。

【実行例】
$ expr cat tmp + 1 > tmp ; if [ cat tmp -ge 5 ]; then echo 1 > tmp ; fi ; echo 今日はダークキングcat tmpだよ!
今日はダークキング2だよ!
$ expr cat tmp + 1 > tmp ; if [ cat tmp -ge 5 ]; then echo 1 > tmp ; fi ; echo 今日はダークキングcat tmpだよ!
今日はダークキング3だよ!
$ expr cat tmp + 1 > tmp ; if [ cat tmp -ge 5 ]; then echo 1 > tmp ; fi ; echo 今日はダークキングcat tmpだよ!
今日はダークキング4だよ!
$ expr cat tmp + 1 > tmp ; if [ cat tmp -ge 5 ]; then echo 1 > tmp ; fi ; echo 今日はダークキングcat tmpだよ!
今日はダークキング1だよ!
$ expr cat tmp + 1 > tmp ; if [ cat tmp -ge 5 ]; then echo 1 > tmp ; fi ; echo 今日はダークキングcat tmpだよ!
今日はダークキング2だよ!
$ expr cat tmp + 1 > tmp ; if [ cat tmp -ge 5 ]; then echo 1 > tmp ; fi ; echo 今日はダークキングcat tmpだよ!
今日はダークキング3だよ!
$ expr cat tmp + 1 > tmp ; if [ cat tmp -ge 5 ]; then echo 1 > tmp ; fi ; echo 今日はダークキングcat tmpだよ!
今日はダークキング4だよ!

あとはこのコマンドをcronなどで1日一回ダークキングの更新時間に叩けば良いだけ。

メリット:
かんたん、オフラインで実行可能、外部要因によるエラーがでない
強さ変更ルールが変わった場合は除く)

デメリット:
内部要因により、一度ズレが生じるとズレつづける

CASE2 日付を参照して1ずつ加算していく

一年は365日で日にちがリセットされる為、エポックタイム(1970年1月1日0:00:00(UTC)から進んだ秒数)というものを使う。
それをJSTで出して一日の秒数86400秒で割って余りを捨てれば一日1ずつ増える整数が出せる。

$ date
2016年  7月  6日 水曜日 15:10:25 JST
$ expr date +%s / 86400
16988

つまり初日7/6は1970年1月1日から数えて16988日目ってこと。
で強さが4つあるから4で割って余りを出せばいいわけね。

【実行例】

$ date
2016年  7月  6日 水曜日 15:25:25 JST
$ expr date +%s / 86400 % 4
0
$ expr date +%s -d '1 day' / 86400 % 4
1
$ expr date +%s -d '2 day' / 86400 % 4
2
$ expr date +%s -d '3 day' / 86400 % 4
3
$ expr date +%s -d '4 day' / 86400 % 4
0
$ expr date +%s -d '5 day' / 86400 % 4
1
$ expr date +%s -d '6 day' / 86400 % 4
2
$ expr date +%s -d '7 day' / 86400 % 4
3

これを見ると初日の強さ1の時に余りが0になってるので、+1すればいいわけね。

【実行例】

$ expr date +%s / 86400 % 4 + 1 > tmp ; echo 今日はダークキングcat tmpだよ!
今日はダークキング1だよ!
$ expr date +%s -d '1 day' / 86400 % 4 + 1 > tmp ; echo 今日はダークキングcat tmpだよ!
今日はダークキング2だよ!
$ expr date +%s -d '2 day' / 86400 % 4 + 1 > tmp ; echo 今日はダークキングcat tmpだよ!
今日はダークキング3だよ!
$ expr date +%s -d '3 day' / 86400 % 4 + 1 > tmp ; echo 今日はダークキングcat tmpだよ!
今日はダークキング4だよ!
$ expr date +%s -d '4 day' / 86400 % 4 + 1 > tmp ; echo 今日はダークキングcat tmpだよ!
今日はダークキング1だよ!
$ expr date +%s -d '5 day' / 86400 % 4 + 1 > tmp ; echo 今日はダークキングcat tmpだよ!
今日はダークキング2だよ!
$ expr date +%s -d '6 day' / 86400 % 4 + 1 > tmp ; echo 今日はダークキングcat tmpだよ!
今日はダークキング3だよ!
$ expr date +%s -d '7 day' / 86400 % 4 + 1 > tmp ; echo 今日はダークキングcat tmpだよ!
今日はダークキング4だよ!

※ ↑は7/6の実行例なので7/7に実行したらちゃんと2になってました。
$ date
2016年  7月  7日 木曜日 15:03:56 JST
$ expr date +%s / 86400 % 4 + 1 > tmp ; echo 今日はダークキングcat tmpだよ!
今日はダークキング2だよ!

メリット:  
外部要因によるズレが発生しない(強さ変更ルールがズレた場合は除く)
内部要因によるズレが発生しない(ntp同期はずれは考慮しない)

デメリット:
強さ変更ルールがズレた場合は手動で計算方法を変えないとダメ


2016/09/01 追記
考え方としては上記でいいんですが、朝6時に更新っていうのが抜けてましたね。
9時間ズレの朝6時追加で3時間分10800秒ズレるのを計算しないとです。
なので、書きコマンド正解はず。


$ i=date +%s ; echo 今日はダークキングecho "($i + 10800) / 86400 % 4 + 1" | bcだよ
今日はダークキング1 だよ


Bash on Ubuntu on Windows入れてたらWindowsでも打てる確認してました(´・ω・`)

規則的なルールだと簡単に計算できるものですね。

ちなみにみえちょんは上記のようは方法は使っていませんw

というのも、もともと色々なサイトから情報を引っ張ってきて整形して自分用にデータを出すようにしてるんですね。
その中で一部のデータをブログに表示させたり、レグの強さをTwitterでつぶやくようにしてたわけです。
今回のダークキングも、レグの強さを引っ張るついでに一緒に引っ張ってきただけなんですね。
計算もクソもありゃしない。

一応メリットとデメリットは以下の通り。

メリット:  
自分が必要と思うデータを好きなだけもってくる事ができる
強さ変更ルールがズレた場合でも影響なし

デメリット:
データをパクっている引用しているサイトの更新が遅れたり書き方が変わったりすると更新が必要になったりする

つまりは計算でもとめられないデータをすでに色々引っ張ってたので、相乗りしましたって事ですねw

必要なデータをもとめられるようになったら、Twitterに自動投稿したりブログを自動更新したりメールやSLACKに通知したりなどできるので便利だったりします。

つーわけで、@miechon_DQXをフォローよろしくねっ(ノ´∀`*)

     ↓ いい記事だと思ったり、かわいいと思ったら
     ↓ 押してくれるとうれしいなっ☆

バナー

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメント

  1. アクアリス より:

    なるほど・・・ナルホド・・・・
    ってなに書いてるかわからんわ!!

  2. みえちょん より:

    > アクちゃん
    えっ?
    つまりは、Twitterフォローしてね!
    ブログランキングぽちってね!!
    いろいろ貢いでね!!!
    こういう事です(*´ω`*)
    待ってるで(`・ω・´)ゞ

  3. より:

    どこの何語やねん。キャベツ語か。

  4. みえちょん より:

    >鮎さん
    キャベツがしゃべるわけないやん^q^