shapezで自動工場(MAM)を作ろう 色生成編
本記事ではshapezで作った全自動工場(MAM)のうち、色生成部分を紹介します。
概要は以下の記事を御覧ください。
色生成器の概要
各図形片の色情報を受け取り、それに応じた色を混色して供給するモジュールです。
- 入力
- 供給してほしい色の情報
- 色素(赤・緑・青)
- 出力
- 入力で指定された色素(無色の場合は供給しない)
詳細
全体像は以下のようになっています。
このモジュールは、4レイヤ×4分割分で16個必要なので、縦に並べることを想定して横長に設計しています。
縦6マスに収まり、かつ上下に隙間なく並べても干渉しないことを意識しました。
そのせいで右側に回路だけの空白地帯が生まれています。
工場制御の考え方
shapezでは工場の形を動的に変えることはできません。ではどうやって振る舞いを変えるのかというと、アイテムフィルタという部品を使います。
アイテムフィルタはコンベアの流路に取り付け、回路信号を受け取ります。信号が1なら全ての図形を通し、逆に0なら全ての図形を通さず別方向に流します。信号がアイテム情報であれば、一致するアイテムのみを流す様になるのですが、今回は使いません。
全ての色を作れる工場を用意し、要求によって一部の流路を塞ぐ・開くことで振る舞いを変更します。
工場の設計は以下のようになります。
コンベアの入力はR・G・Bそれぞれの色素で、出力は指定された色素です。信号としてはR,G,Bの3つの真偽値を使います。それぞれは指定された色にこの色が使われているかどうかを示します。
コンベアに対して図のようにアイテムフィルタを取り付け、図のような真偽値を入力することで、目的の色のみを取り出すことができます。計算してみてください。
実装
右側の回路では、指定された色素に何の色が必要なのかを調べるということをやっています。左下の線に上からR,G,Bの真偽値が得られます。
左側の回路では、設計通りの真偽値をそれぞれのアイテムフィルタに送ることをやっています。
コンベアの設計は以下のように実現しました。設計をがんばって縦6マスに収めた結果がこれです。
これで完成です。まさかゲームに論理学の知識が生きるとは思いませんでした。論理学履修しててよかった。
Share on X now! | Share on Facebook now! | Share on Linkedin now!