うまくいけば、これは十分に明確になるでしょう。
タイルで構成された 2D マップがあり、「水」がこのマップを通過するようにします。パイプから出て特定のタイルに到達し、水のようにすべてのタイルを満たして特定の他のタイルに到達する必要があります。現在、各タイルがノードであり、各ノードがその周囲のすべての適切なタイルに接続されているマップをゲームに入力しています。最初に x、次に y で並べ替えられた配列にノードを格納しています。さらに、一部のタイルは「ゲート」タイルであり、水の流れを止めることができます。これらはノード タイルの同じグリッドの一部であり、アクティブなときにフラグが立てられます。
問題は、水をどのように分散させるかです。
最初に、各パイプ (水をドロップする) に「現在」と「満杯」の水タイルのリストを追跡させ、「現在」のタイルに直接水を分散させ、次にそれらを「満杯」のリストに切り替えます。適切な。「現在の」リストは、既に「現在の」タイルの周囲のタイルを取得することで拡張されました。いずれにせよ、これはうまく機能し、水はうまく流れましたが、水の流れを止めたり、再び許可したりできるように、ゲートで機能させる方法がわかりませんでした。 ) 特定のポイントで。
現在、水が 1 つのタイルだけに落ちており、タイルに水が多すぎると、ランダムな隣接タイルに徐々に水が押し出されます (タイルがアクティブなゲートでない限り)。これは、水が「外側」に流れるのではなく、すでに満たされたタイルの周りに「跳ね返る」ことです。最終的にはそこにたどり着きますが、その流れはあまり自然ではありません。
これで私のジレンマは終わりです。
コードはpythonで書かれています。
編集:新しいアイデア。更新ごとに水を配置するのに適した空きタイルをパイプで検索することもできますが、これは非常に効率が悪いようです (特に複数のパイプがある場合)。