電子趣味の部屋

電子系のガジェットやアプリ開発等の趣味の話題を書いてます

Vana'diel Clock 制作4

このエントリーは2006年6月頃『0から独学ではじめる電子工作』に書いたエントリーを再構成してます。当時とは現在と状況が違う事がありますので、所々補足しています。

飛空挺時間表示

ジュノを支点として飛空挺の出発時間を表示します

飛空挺の出発時間は以下の通りです。

サンドリア
  1:10
  7:10
  13:10
  19:10

バストゥーク
  4:10
  10:10
  16:10
  22:10

ウインダス行
  2:40
  8:40
  14:40
  20:40

カザム行
  5:40
  11:40
  17:40
  23:40

サンドリア
  4:10
  10:10
  16:10
  22:10

バストゥーク
  1:10
  7:10
  13:10
  19:10

ウィンダス
  5:40
  11:40
  17:40
  23:40

カザム発
  2:40
  8:40
  14:40
  20:40

飛空挺の時間を求めるときはヴァナ時間の秒を使いました。
以下のようなロジックで次の便までの秒を求め、25倍して現在時間の秒を表示します。

  // 各目的地の4便の運行時間を配列に入れてます。
  // 現在時刻より後の便までの秒を求める
  for (char i = 0; i < 4; i++) {
    if (time == 0 && nowtime < takeofftime[i]) {
      time = (int)((takeofftime[i] - nowtime) / 25);
    }
  }
  // 上ループで対象が無かった場合(第4便の後の時刻)は、次のひの第1便の時間を使います。
  if (time == 0) {
    time = (int)(((takeofftime[0] + 86400) - nowtime) / 25;
  }

これを各目的地毎に求めましょう。
LCDが4行表示なので、ジュノ発と各国発の時間をボタンで切り替えて表示するようにしました。

ジュノ発

各国発

汽船時間時間表示

汽船の出発時間の計算方法は飛空挺と同じです。
ボタンを押すとバージの出発時間も表示するようにしました。
バージは種類も多く、表示方法も悩んだ結果、夕照桟橋−プルゴノルゴ島だけ表示するようにしました。

各出発時間は以下の通りです。
汽船は2地点間の出発時間は同じです。

セルビナ−マウラ
   0:00
   8:00
  16:00
マウラ−白門
   4:00
  12:00
  20:00
白門−ナシュモ
   0:00
   8:00
  16:00
夕照桟橋−プルゴノルゴ島
   5:30
  17:30
プルゴノルゴ島−夕照桟橋
   9:15
  21:15

時間の計算方法は飛空挺同じです。

汽船の表示はこんな感じ

バージの表示はこんな感じ

ギルドショップ時間表示

ギルドショップの時間の計算方法は飛空挺等と同じですが、開店時は閉店までの時間、閉店時は開店までの時間を表示することにしました。
ギルドショップは9種類あるので、ボタンを押す毎に3種類ずつ表示するようにしました。

各ギルドショップは以下の通りです。

ギルド 開店 閉店 休み
鍛冶 08:00 23:00 水
裁縫 06:00 21:00 火
錬金 08:00 23:00 光
木工 06:00 21:00 火
彫金 08:00 23:00 氷
革工 03:00 18:00 氷
骨工 08:00 23:00 風
釣り 03:00 18:00 雷
調理 05:00 20:00 闇

ここまでで約11Kワードでした。
ベタで組んだので無駄が多いですが、最近のPCのプログラムと比べたらかなり小さいですね。

とりあえず当初の予定の機能は実装したので、とりあえず完成かな?
まだ5K残ってるので、そのうちバリスタとか色々と追加したいと思ってます。

写真ではわかりにくいですが、今回からバックライト付の液晶にしました
秋月で1,500円で購入(LCDキャラクタディスプレイモジュール 20×4行バックライト付き)