multidimension array help-- no dynamic arrays?

Monkey Forums/Monkey Programming/multidimension array help-- no dynamic arrays?

AdamRedwoods(Posted 2011) [#1]
Class CMinimap
	Field map:Int[][]
	Field width:Int
	Field height:Int
	
	Function Create:CMinimap(w:Int, h:Int)
		Local minimap:CMinimap = New CMinimap
		Local j:Int, k:Int
		minimap.width = w
		minimap.height = h

		minimap.map = [New Int[w], New Int[h]]

		For k =0 To  h-1
			For j = 0 To w-1
				minimap.map[j][k] = 0
			Next

		Next
		
		Return minimap
	End
End

Class Game Extends App
	Method OnCreate()
		Local minimap:CMinimap = CMinimap.Create(50,40)
        End
End


Compiles, but errors on run: array index out of range.

I keep banging my head. Any ideas? Something obvious?
I've tried putting actual numbers in for j and k. J only allows up to the number 1 before erroring out. K works for any numbers.


muddy_shoes(Posted 2011) [#2]
See this thread: http://monkeycoder.co.nz/Community/posts.php?topic=822

People keep tripping over this. It might be an idea to add some array utility functions to the standard library.


AdamRedwoods(Posted 2011) [#3]
Thank you. I had done a search, and it came up with the wrong answer (there is a post that is wrong out there).
http://www.monkeycoder.co.nz/Community/posts.php?topic=162

My other thought is, why isn't Array.Allocate() not in the core functions?
Array.Resize() is.


muddy_shoes(Posted 2011) [#4]
That post isn't wrong, it's just a poorly chosen example as it's easy to confuse the declaration of

Global myarray:=[New Int[2],New Int[2]]


As being a template for declaring the desired array width and height where the '2's are when they are actually declaring the two rows of length 2 in the 2x2 array.


Foppy(Posted 2011) [#5]
People keep tripping over this. It might be an idea to add some array utility functions to the standard library.
To start with, there should be a bit more explanation about Arrays in the documentation. I find myself going back to this website and enter "array" as a search term in order to find an example on how to create an array, which is not in the docs.