これを行うためのクリーンな方法があると確信していますが、おそらくそれを見つけるために適切なキーワードを使用していません。
それで、私がグリッドを持っているとしましょう。グリッド上の位置から開始して、指定された距離内にあるすべてのグリッド座標を返します。だから私は次のようなものを呼びます:
getCoordinates( currentPosition, distance )
そして、各座標について、初期位置から始めて、すべての基本的な方向を追加し、距離に達するまでそれらの周りのスペースなどを追加します。グリッド上では、これはダイヤモンドのように見えると思います。この関数は、その座標の配列を返します。誰かがこれを効率的に行うルーチンを教えてもらえますか(私はAS3で作業していますが、その価値はあります)?
目的の出力では、反復1は次のようになります。
.x.
xxx
.x.
反復2は次のようになります。
..x..
.xxx.
xxxxx
.xxx.
..x..
反復3:
...x...
..xxx..
.xxxxx.
xxxxxxx
.xxxxx.
..xxx..
...x...
等々...