multidimension array help-- no dynamic arrays?
Monkey Forums/Monkey Programming/multidimension array help-- no dynamic arrays?
| ||
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. |
| ||
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. |
| ||
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. |
| ||
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. |
| ||
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. |