そのため、「スタックレベルが深すぎます」というエラーが発生し、原因がわかっていると確信しています。私はタイルベースのゲームに取り組んでおり、すべてのタイルを持っています。便宜上(パスファインディングを使用する必要があるたびに検索する手間を省くため)、各タイルには8つの隣接するタイルを含む「近くの」配列があります。
ただし、デバッグのためにいくつかのオブジェクトを印刷しようとすると、「スタックレベルが深すぎます」というエラーが頻繁に発生します。これは、各タイルの「近くの」配列に隣接するタイルがあり、元のタイルを参照して、すべてのオブジェクトを印刷しようとするとループが発生するためだと思います。
私はこれと一緒に暮らすことができますが、私がケーキを持ってそれを食べることができればもっといいでしょう。オブジェクトを直接参照するのではなく、IDまたは座標でタイルを参照することで回避できます。欠点は、これは毎回オブジェクトを検索することを意味します。
それで、現在のコードを維持しながら、「近くの」配列が出力に出力されないようにして、正常に停止する方法はありますか?
それが明確であることを願っています!現在のコード:
class Tile
attr_accessor :type, :x, :y, :z, :nearby, :t_id
@type = 0
@@count = 0
def initialize(x, y, z, type)
@x = x
@y = y
@z = z
@t_id = @@count
@@count += 1
@nearby = []
@type = type
end
end