NoMethodError ?

C

Chris Bailey

In the following code I am trying to print out the value of the
variable @symbol from an array of instances of the MapSector class. I
don't understand why I'm getting "NoMethodError: undefined method
`symbol' for #<Array:0xb7cb025c>" after putting this in irb and typing:
foo = GameMap.new(5,5)
foo.show_map


class GameMap
attr_accessor :height, :width, :id, :sectors
def initialize height, width
@height = height
@width = width
@id = nil
@sectors = Array.new(@height, MapSector.new) {Array.new(@width,
MapSector.new)}
end

def show_map
@sectors.each do |x|
puts x.symbol
end
end

end

class MapSector
attr_accessor :type, :symbol, :players
def initialize
@type = "plains"
@players = []
@symbol = "."
end
end
 
C

Chris Bailey

Chris said:
In the following code I am trying to print out the value of the
variable @symbol from an array of instances of the MapSector class. I
don't understand why I'm getting "NoMethodError: undefined method
`symbol' for #<Array:0xb7cb025c>" after putting this in irb and typing:
foo = GameMap.new(5,5)
foo.show_map



Well I figured out the first half of my problem. I guess my show_map
method was trying to find the symbol variable inside the Array object,
whoops. So I have updated the show_map method to the following.

def show_map
x = 0
y = 0
while x < @height
while y < @width
puts self.sectors[x][y].symbol
y+= 1
end
x += 1
end
end

The problem I am having now is that when the method is run on a 4x4
array of MapSectors it only prints out 4 symbols...it should be 16. I
have verified that the nested arrays are all properly populated so I
guess it just isn't iterating through them properly. Any ideas?
 
C

Chris Bailey

The problem I am having now is that when the method is run on a 4x4
array of MapSectors it only prints out 4 symbols...it should be 16. I
have verified that the nested arrays are all properly populated so I
guess it just isn't iterating through them properly. Any ideas?

Ok I've gotten it all figured out and working, thank's anyhow! =)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,584
Members
45,075
Latest member
MakersCBDBloodSupport

Latest Threads

Top