タクシーの運賃メーターの再現

1:前書き

まだ制作が終わっていないため、これから書く内容は変更される可能性があります。

また、もっと面白くなる可能性もあるので是非展示にミニ来てください!

私が今回制作したのはタクシーの運賃メーターの再現です。

「なんでこんなものを作ったんだ」とみなさんは思うでしょう。私も自覚するほど微妙です。

最初は自分でもそう思っていましたが、いざコードを書いてみると長〜〜〜〜〜〜くなりすぎました。

この理由は後で言います。展示に来てもらえば観せようかと思います。

この部誌はがんっばって書き上げたのでぜひ最後まで読んでいた炊けるとありがたいです!しかしとても長いのでじっくり読むなら家で読むのをお勧めします。

なんとなく読んでも大体の内容はわかると思います。

2:機能

ここでは今回作ったものの機能を説明します。

最短距離

一つ目は最短距離を求める機能です。プログラミングだからきっとスマートに求められるんじゃないかと思うでしょうがそんなスマートにはいきません。

参考にしたのは他にもありますが、主にこれ(参考にしたサイト)です。これはベルマンフォード法という最短距離を求める方法です。これは全ての点へのcostを求めていき小さいcostが新たに出たら更新していき最終的に最小のcostが求まるというものです。しかしこんなにうまくいきませんでした。

理由は例外が多かったからです。例外というのは上のサイトは最短距離を求めるのは求める地点の間がどのぐらい離れているかしか必要ないですが。今回使ったのは座標がそれぞれの点にありそれを含め計算したしたので大変でした。

プログラムの画像1プログラムの画像2

最短距離を求めるだけでこんなに長くなってしまいました。

一番苦労したのが最短距離の経路を出すところです。上のサイトでへcostがどのぐらいかかるかしか求めていないのでこの部分は自分で考えました。

スタート地点の座標とゴール地点の座標を入れるとこのようにかかるcostと通った経路(passed)を求めることができます。Fractionというのは分数のことです。([Fraction(1, 3)]というのは1/3三分の一です。)ここで分数を使う理由は少数にしてしまうと、例えば1/3のような値が出ると0.333333.......と無限につずいていきますがプログラミングでは全ての桁を考えることができないので0.333とあるところで切れてしまうので計算する時、例えば1/3 × 3とする時分数では1になりますが少数で計算すると0.999となってしまい0.001分だけ誤差が出でしまい計算していくとこの誤差が大きくなり大きなずれとなってしまうため分数を使いました。

運賃カウント

これも製作中ですが簡単にできます。

上で出た時間の一定数になると一定の金額を足していけばいいのです。

料金は90秒で80円だったので一つのcostを1分とし60円加算されるようにしました。

これ以外にも様々な機能があるのでぜひ見に来てください。

 

3:操作

操作は簡単で青いボタンを押すとランダムで動いていたタクシーを止めて、目的地を設定することでそこまでの最短経路で運ぶというシミレーションをしてくれます。

4:最後に

結構地味なものですがサイトからコピペすることなく一ヶ月ほどかけ全て自分の手で書いたので見に来てくださると嬉しいです。

この部誌に書いてあることでわからないものがあったらなんでも聞いてください!

まだ終わってませんが全力で完成させます!