■ はじめに
前回、表示用マップの為のPNGファイルをibisPaintXを使って作成しました。
今回は、これを用いて表示用マップを作ります。
実際の宅配問題のアプリには、表示と論理マップの分離等、難しい問題が残っています。
この辺は次回に回して、表示部だけをチェックするプロンプトを作成します。
プロンプトから生成されたコード確認で、意図しない半角スペースがファイル名に入ったらしく、エラーが出ましたが、これは直ぐに消すことができました。
■エラーの影に潜むバグ
マップ作成に成功した時は、小躍りして喜んだのですが、ちょっと違和感が…
「人の透明化がそのまま残っている」
歩道とか横断歩道が透けて見えるはず。
はじめは、gifファイルせいかとも思ったけど、真ん中のエージェントはちゃんと透明部分に下絵が出てきます。
アルゴリズムとしては、
①人を歩道・横断歩道に配置
②その座標を渋滞マップに書き込む
という処理になっています。
しかし渋滞マップは、ただのアスキーマップなので、「元が歩道だったのか横断歩道だったのか」
という情報が、人情報で塗りつぶされます。
これを直す手段は、ざっと3つ考えられます。
①人発生場所を歩道か横断歩道にしぼる
②渋滞マップへ書き込むアスキーを歩道と横断歩道に分けて下絵が何であったかわかる様にする
③人を渋滞マップから切り離して、座標を持ったオブジェクトとして、マップ更新毎に重ねる
①は、実質的にダウングレードなのでパス。
②③は、どちらもありな改造です、
しかし、③は将来人の位置を変えることにつながるため、大変魅力的ですがシステムのかなり深いところを触る事になるので、間違うと沼一直線です。
ここは、ひよって②でいきます。
(リスク管理とも言う)
■結果:
という事で人画像を横断歩道と歩道に分けました。
ついでに、crosswalkのままアスキーにして「C」とかするとポイントCと混同しやすいので、
crosswalk→zebra
に変更しました。
直し+変更に対応したPNG圧縮ファイルはコチラ
github.com/logicmaker256-prog/delivery_map
(delivery_PNGファイルをダウンロード)
チェック用プロンプトとChatGPTさんに生成してもらったpythonコードはコチラ
github.com/logicmaker256-prog/delivery_map/blob/main/PNG_test.txt
github.com/logicmaker256-prog/delivery_map/blob/main/delivery_map.py
=== 使い方 ===
1.圧縮ファイルを解凍し、ご自身のGoogle drive に delivery_PNGフォルダを作って、ファイルを入れて下さい。
2.pythonコードを実行すると、Google ColabがGoogle driveへのアクセスを求められるので許可します。(不許可の場合はコードは動きません)
3.delivery_viewフォルダが、Google driveにでき生成したマップがみえます。
■ 今回の学び:
今回学んだというか学びなおしたことは、
「リスク管理って大事だな」て事です。
今回は手直しを②で行ったので、僅かな手数の増加ですみましたが、③を選んで沼ってたらこんな手数では、すみませんでした。
■まとめ
今回は、表示マップが確認できるプロンプトを作ってpythonコードを用意してもらいました。
若干想定外のバグもありましたが、表示部完成したので、アスキーマップ側の変更に着手できます。
今回の構造は、ゲームでよく使われる
「タイルマップ方式」に近い構造になりました。
今後は、
・表示マップ
・論理マップ
の分離を行い、より拡張しやすい構造にしていく予定です。
最後になりますが、予告どおり余力がなかったので、表示と論理のマップ分離は次回になります。
あ、今回バイブコーディングはできました。
それだけですけどね。
