2018年2月5日月曜日

ゲームの進展状況4 広範囲色塗り

我は続いて、周囲2マスを塗りつぶすようなプログラムを考えた。
そのやり方はこうである。周囲2マスの範囲は、実は周囲1マスの範囲内のマス全てに同様のことをもう一度適用した範囲の和集合に等しい。そういうわけで、たとえば46が対象なら、範囲1マスの仮定で35,36,45,46,47,56,57に色が塗られるわけだが、これら7個の値を保存する変数をつくっておき、あとでこれらについて再び範囲1マスの処理をする。ただし普通にやると激しい重複を生む(たとえばマス36などは、35,46,47からの相互作用と自身の作用を受ける)ので、この場合のみ重複を生まないようにした。ここのプログラムは意外に難解で、カウント変数や置換許可変数などいろいろ持ってきてなんとかクリアした。

しかしその弊害で普通に周囲2マスをグレードアップさせるようなものはつくれなかった。
その理由はちょっと難しいが、分かる人なら分かるか…?

以下は2つのモードで2マス範囲塗りを行った結果である。
 上の画像はグレードダウンしないモード、下の画像は固定ダウンしないモード。
すなわち上のほうでは、すでに上位の色で上書きされたものには色置換を施さない、というもので、たとえばすでに緑だった場合に、青や白で塗りつぶそうとしても塗りつぶされない、というもの。しかし青で塗りつぶすときに白があれば、範囲内ならそれはぬりつぶされる。
それを表したのが上のほうの画像。

下の画像はただ単に新しいものでどんどん置換させただけのもの。良い色があったとしても、悪い色で上書きされることになる。

上と下、結果は違うが、実は同じ順番で塗りつぶしの処理をほどこしている点に注目。

実際のゲームでは、おそらくほぼ全て上のモードをとることになるだろう。


さてこれでぐるぐるドロップの効果の予定になる周囲2マス色塗りを実装した。

新しいアニマ系ゲームの作成に伴うブログ移転

https://zisakukarako.blogspot.com/ というブログで、今度は自作カラコロッタをつくってみようということにした。 今度は自作アニマロッタ風ゲームでの反省を生かす予定。 どこまで続くかは不明。 さらに、自作アニマロッタまで作ろうと試みている...