burtybob Posted March 13, 2010 Share Posted March 13, 2010 This is probably a really newbie question but what is the best way to do a map that has to contain two arrays. I will try to clarify. I have a map that is X squares wide and X squares high (X = a variable passed to it which can change). I was thinking that the easiest way would be something like an array or vector with X*X elements and then each element having an array of what the map tile holds but different map tiles can hold different amounts of data. I have two vectors: mapArray and mapSquare. I add elements to mapSquare (a and b plus the number the loop is on) so a0 and b0 then a1,b1 etc. The only problem is that every element in the primary array/vector is the exact same if I do .clear() on the vector. If i don't do .clear() on the mapSquare then the mapSquare works but has the previous elements plus all the new ones so a0,b0 even when I want the mapSquare to contain only like a1,b1. Oh dear I don't think anyone is going to be able to understand this . I will try to clarify any bits that anyone is still confused on. Quote Link to comment https://forums.phpfreaks.com/topic/195071-best-way-to-do-this-java/ Share on other sites More sharing options...
burtybob Posted March 16, 2010 Author Share Posted March 16, 2010 I am guessing that I did confuse everyone Here is what i have been playing with: Object map[mapSize][]; for(int i=0;i<mapSize;i++) { map[i][] = {"Element 1","Object 2","Item 3"}; } But the code errors at the map[] ={...}; bit. The error is "Syntax error, insert "}" to complete Block" Hope that clarifies things now. Quote Link to comment https://forums.phpfreaks.com/topic/195071-best-way-to-do-this-java/#findComment-1027045 Share on other sites More sharing options...
KevinM1 Posted March 16, 2010 Share Posted March 16, 2010 Why don't you tell us what you hope to do with this map? It's hard to get an idea of what you're attempting to do when you're being so vague. What is the map supposed to represent? What about each tile? Quote Link to comment https://forums.phpfreaks.com/topic/195071-best-way-to-do-this-java/#findComment-1027161 Share on other sites More sharing options...
burtybob Posted March 16, 2010 Author Share Posted March 16, 2010 I am wanting to create a game and this is the only thing that I have found hard. The map is of an area of land. Each tile will hold information like what is on that tile such as whether is a building and if so what building or if it doesn't have a building on it then does it have building rights. The first index would be the tile ID and then the second one would be the actual stuff there. So like: map[] = {true,none, false}; where the first value is if it is owned, the second is what is built there and the final one is the status of building rights. Hope that makes sense. I have a horrible tendancy to waffle and make no sense. Quote Link to comment https://forums.phpfreaks.com/topic/195071-best-way-to-do-this-java/#findComment-1027168 Share on other sites More sharing options...
KevinM1 Posted March 16, 2010 Share Posted March 16, 2010 Instead of storing that info in an array, why not store it in an object?* It just seems like a simpler way to look at it, and it would increase readability. I mean, how would you access the info stored in a tile with the way you have it now? Something like: (map[1][5])[0]; // whatever that's supposed to return Right? With a tile object, you could have a method that makes it a lot easier to see what's going on: map[1][5].GetId(); //return the id of the tile at coordinates 1-5 This would also allow you to plug in other functionality into each individual tile. Are some tiles due for a buff/debuff? Add an observer. Do some give different bonuses? Wrap a decorator around them. The point is to not fight against Java's OO nature. Arrays are a useful tool, but not the only one available to you. Regarding your syntax error, I can't help you there. I don't know Java. My mostly-OO language of choice is C#, which is pretty similar to Java, from what I hear. *Yes, I know that arrays are objects in Java. I mean a proper object. ;-) Quote Link to comment https://forums.phpfreaks.com/topic/195071-best-way-to-do-this-java/#findComment-1027190 Share on other sites More sharing options...
burtybob Posted March 16, 2010 Author Share Posted March 16, 2010 hmm That is a good idea to have a tile class. It would definantly make it easier. I have problems with OOP sometimes as when I first started programming they taught us procedural and I am now trying to learn OOP style. Thank you for the advice. Doing it with a tile class also means there is no worrying about the syntax error. Quote Link to comment https://forums.phpfreaks.com/topic/195071-best-way-to-do-this-java/#findComment-1027209 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.