特定のセルに隣接するすべてのセルを見つける必要がある pyglet/openGL を使用して、Python でタイル ベースのアプリを構築しています。私はデカルト グリッドの 1 つの象限で作業しています。各セルには、グリッド内の位置を示す x 値と y 値があります ( x_coord と y_coord )。これらはピクセル値ではなく、グリッド位置です。隣接するセルを取得する効率的な方法を探しています。最大で 8 つの隣接するセルが存在する可能性がありますが、グリッドの境界により、3 つのセルが存在する可能性があります。単純だがおそらく非効率的なアプローチの疑似コードは、次のようになります。
def get_adjacent_cells( self, cell ):
result = []
x_coord = cell.x_coord
y_coord = cell.y_coord
for c in grid.cells:
if c.x_coord == x_coord and c.y_coord == y_coord: # right
result.append( c )
if c.x_coord == x_coord - 1 and c.y_coord == y_coord + 1: # lower right
result.append( c )
if c.x_coord == x_coord - 1 and c.y_coord == y_coord: # below
result.append( c )
if c.x_coord == x_coord - 1 and c.y_coord == y_coord - 1: lower left
result.append( c )
if c.x_coord == x_coord and c.y_coord == y_coord - 1: right
result.append( c )
// -- similar conditional for remaining cells
これはおそらく問題なく動作しますが、このコードはすべてのフレームで実行する必要があり、より大きなグリッドではパフォーマンスに影響を与える可能性があります。より合理化され、CPU をあまり使用しないアプローチのアイデアはありますか? または、このアプローチでロールする必要がありますか?
前もって感謝します。