私はPyGameで遊んでいます。
今私はQIXクローンを実装しようとしています。
ゲームループがあり、画面上でプレーヤー(カーソル)を移動できます。
QIXでは、プレーヤーの動きによって画面に痕跡(尾)が残り、ポリラインが作成されます。
画面境界を持つポリラインがポリゴンを作成する場合、領域は塗りつぶされます。
どうすればこの動作を実現できますか?
尾をどのようにメモリに保存しますか?
塗りつぶす必要のある閉じた形状を構築するときにそれを検出する方法は?
私は正確な実用的なソリューションを必要としません、いくつかのポインター、アルゴ名はクールでしょう。
開始時、灰色の境界線のみがあり、プレーヤーがカーソルを移動できます。
- 最初のシナリオ:
ユーザーは、カーソルをポイントAからポイントBに移動し、赤いマルチラインをポイントCまで描画します。この時点で、境界を越えているため、ポイントAは自動的にポイントCに接続され、塗りつぶされるべきポリゴンが作成されます(私の図面上のそのオレンジ色のもの)。ポリゴンの塗りつぶしはPyGameでは非常に簡単です。私がポイントのシーケンスを提供し、残りはPyGameが処理するためです。
- 2番目のシナリオ:
ユーザーはボーダーをポイントDに移動し、そこからラインEに線を引きます。前のポリゴンのラインと交差しているため、ラインとボーダーで別のポリゴンを作成できるので、それも塗りつぶす必要があります。(緑色のもの)。
- 3番目のシナリオ:
プレイヤーはポリゴン上をさらに移動し(既存のポリゴンライン上を移動できます)、ポイントGからポイントFにラインを描画します。ここでも、境界線と既存のラインのため、別のポリゴン(青色のポリゴン)を塗りつぶす必要があります。