私はタイルスプライトとタイルの属性を保持するMapTile
クラスを持っています。私は10x10グリッドで例えば100タイルを保持する2D配列を作成したいと思います。私は、タイルスプライトだけを保持している普通の古い2D配列を使用してタイルマップを描画し、うまくいきました。しかし、mapData
という名前の2D配列にMapTile
クラスを含むタイルスプライトを割り当て、mapData[i][j].tileSprite = tileNum
を使用すると、列のすべての要素にtileNum
という値が割り当てられます。私は、これを動作させるために考えられるすべてを試しました。私はRubyを初めて使うC++プログラマーです。Rubyで2D配列のクラスオブジェクトに値を代入する方法
class MapTile
attr_accessor :tileSprite, :attribute
def initialize(sprite, attr)
@tileSprite = sprite
@attribute = attr
end
def tileSprite
@tileSprite
end
def attribute
@attribute
end
end
def array2D(width,height)
a = Array.new(width, MapTile.new(123,0))
a.map! { Array.new(height, MapTile.new(123,0)) }
return a
end
@mapData = array2D(@mapSize,@mapSize)
mapData[1][j].tileSprite = tileNum #Now every tileSprite in column 1 is tileNum
ソリューション
def array2D(width,height)
a = Array.new(width) { MapTile.new(10,0)}
a.map! { Array.new(height) { MapTile.new(10,0) } }
return a
end
にarray2D方法を変更しましたおかげでマイケル!
マイケルさん!変更を反映するために質問を編集しました。あなたのソリューションは機能しました。コードレビュースタックエクスチェンジでコードを実行します。素晴らしいサイトのように見えます!助けてくれてありがとう! – Spencer
Ehm Spencer、あなたはあなたのために働いた答えを受け入れるよう訴えられます。 – steenslag
ありがとうございます。今修正されました。 – Spencer