gpt4 book ai didi

java - 将二维数组转换为一维数组,同时保持网格顺序

转载 作者:行者123 更新时间:2023-12-03 01:56:25 29 4
gpt4 key购买 nike

我一直在研究使用 Java 进行图 block 集和 map 编辑。但是,我遇到了一个问题。

map 文件指定要放置的图 block ,如下所示:

tileset image: tiles.png
tileset width: 1024
tileset height: 1024
tileset tile width: 16
tileset tile heigth: 16
tiles on x axis: 5
tiles on y axis: 6
tiles: 1,1,1,1,1,1,1,1,1,1,1,1,3,2,2,2,2,2,22,3,4,26,21,9,19,28,18,2,1,1,1,1 etc...

图 block 集图像将如下所示读取:

                X:
1 - 2 - 3 - 4 - 5
-----------------------
1| 1 | 2 | 3 | 4 | 5
2| 6 | 7 | 8 | 8 | 10
Y:3| 11| 12| 13| 14| 15
4| 16| 17| 18| z | 20
5| 21| 22| 23| 24| 25
6| 26| 27| 28| 29| 30

('| 只是为了间距)

为了帮助理解此表,“z”处的图 block 集x,y 坐标将为(4,4) 及其索引将是19

现在忘记图像了,因为它们在这里无关紧要,我想知道如何从 tilset 上的坐标(z's (4,4))获取索引(z's 19) )。

例如如果我有这个代码:

int tilesetTilesWidth = tilesetImageWidth / tileWidth;
int tilesetTilesHeight = tilesetImageHeight / tileHeight;
int[][] coords = new int[tilesetTilesWidth][tilesetTilesHeight];
int[] indexes = new int[tilesetTilesWidth * tilesetTilesHeight];

for(int x = 0; x < coords.length; x++){
for(int y = 0; y < coords[x].length; y++){
indexes[?] = coords[x][y]; //What should ? or this line be replaced with?
}
}

应该做什么?或者这一行被替换为?

注意:如果有任何问题或我错过的任何内容,请发表评论,因为我很着急。

最佳答案

安德森的答案可能就是您正在寻找的,但为了回答这个问题,我相信索引将是 (y-1)*cords.length+x

请注意,在此示例中,由于 cords.length = 5、y=4 和 x=4,我们将根据需要得到 (4-1)*5+4 = 3*5+4 = 15 + 4 = 19 .

关于java - 将二维数组转换为一维数组,同时保持网格顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29975967/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com