I have a string:
I have a string:
Store in a 2D array like this:
int[,] map = new int[,]
{
{ 1, 0, 0, 0, 0},
{ 0, 0, 0, 3, 0},
{ 0, 2, 0, 0, 0},
{ 0, 0, 0, 0, 0},
{ 0, 4, 0, 0, 6},
}
you can access numbers like so:
map[y,x]
//E.g
int num1 = map[0,0];
int num2 = map[2,1];
int num3 = map[1,3];
int num4 = map[4,1];
int num6 = map[4,4];
I need to access the value of each character though, not just the position of it in the string
I don't know why I never even considered that -.- So how would I get the position of the number in a certain row? Getting the row would probably be easy if there's some kind of method you can use.
const size_t mapStride = 5;
size_t calcIndex(size_t row, size_t column) {
return (row * mapStride) + column;
}
size_t calcRow(size_t index) {
return index / mapStride;
}
size_t calcColumn(size_t index) {
return index % mapStride;
}
Alright so because I'm always going to know the dimensions of x and z, I've chosen to hard code them into the for loop
for(int x = 0; x < 5; x++)
{
mapCoordsX[x] = x;
}
Same with mapCoordsZ. So the x and z are fine for now, until I want to make a bigger map.
Inside my for loop, I'm creating cubes with a position at each mapCoord like so:
new Vector3(mapCoords[x], (y goes here?), mapCoords[z])
This creates a nice 5x5 grid of cubes for me. Now if the cube at position (0, 0) has a height of 2 in my map array... {2, 0, 0, 0, 0}...how would I set the y position of this cube?
#region MAP
float[,] map =
{
{1, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
};
#endregion MAP
for (int x = 0; x < 5; x++)
{
mapX[x] = x;
}
for (int z = 0; z < 5; z++)
{
mapZ[z] = z;
}
for (int y = 0; y < map.Length; y++)
{
mapY[y] = 0;
}
for (int x = 0; x < 5; x++)
{
for (int z = 0; z < 5; z++)
{
for (int y = 0; y < 5; y++)
{
cubes.Add(new Vector3(mapX[x], mapY[y], mapZ[z]), Matrix.Identity, grass);
}
}
}
There's the full code of what I'm doing. It's also creating 125 cubes instead of 25 but I'll fix that later :P