Java 在For循环中定位模块

Java 在For循环中定位模块,java,for-loop,position,Java,For Loop,Position,各位,我的商店及其子模块的定位有问题。所以我有一个Store和一个StoreModule类,它们一起工作。在我的映射或级别类中,以及在构造函数中,我将此代码称为: store = new Store(Tile.TILE_SIZE, 0, 0, 3, 8, 2, Sprite.grass); 现在让我们深入了解运行这个代码的存储> /代码>类。 public Store(int size, int x, int y, int pad, int cols, int rows, Sprite spr

各位,我的商店及其子模块的定位有问题。所以我有一个
Store
和一个
StoreModule
类,它们一起工作。在我的
映射
级别
类中,以及在构造函数中,我将此代码称为:

store = new Store(Tile.TILE_SIZE, 0, 0, 3, 8, 2, Sprite.grass);

现在让我们深入了解运行这个代码的<代码>存储> /代码>类。

public Store(int size, int x, int y, int pad, int cols, int rows, Sprite sprite) {
    this.cols = cols;
    this.rows = rows;
    mods = new StoreModule[cols * rows];

    for (int yy = 0; yy < cols; yy++) {
        for (int xx = 0; xx < rows; xx++) {
        System.out.println("xx:" + xx + ", yy:" + yy + " ; x:" + (x + size * xx + pad * xx) + ", y:" + (y + size * yy + pad * yy));
            mods[xx + yy * rows] = new StoreModule(x + size * xx + pad * xx, y + size * yy + pad * yy, Sprite.rock);
        }
    }
}
需要发生的是
x
y
实际上需要切换。我可以通过将
x
放在
y
的位置和
y
放在
x
的位置来轻松解决这个问题,但这似乎是解决我问题的廉价方法。我只知道问题出在
Store
类中的
for循环中

摘要

我正在创建一个
Store
类,该类处理网格模式中
StoreModule
s的创建,当我这样做时,我使用
for循环
。问题是,如果我将
设置为
8
,将
设置为
2
,似乎会将它们翻转过来。我该如何解决这个问题?正如我所说,我可以通过将
视为
,反之亦然,或者将
x
放在
y
的位置,反之亦然,来廉价地解决这个问题。感谢您的帮助。

当您将x、y(坐标)与行和列错误地组合在一起时,通常会发生这种情况。在你的代码中,x是行,y是列,但从直观的角度来看,矩阵应该是相反的。我真的以为我弄错了,但我真的没有。在for循环中,我让
yy
cols
运行,而
xx
行运行。正如我之前所说,如果我只是切换这些,它将是固定的,但考虑到它不是真的正确,我不喜欢它。我不知道你如何直观地看待二维数组,但我看到行一行一行地在另一行下面(在减少的y坐标),列一列地在另一列后面(在增加的x坐标),所以我看到它的方式,我将x与列关联,将y与行关联。
xx:0, yy:0 ; x:0, y:0
xx:1, yy:0 ; x:57, y:0
xx:0, yy:1 ; x:0, y:57
xx:1, yy:1 ; x:57, y:57
xx:0, yy:2 ; x:0, y:114
xx:1, yy:2 ; x:57, y:114
xx:0, yy:3 ; x:0, y:171
xx:1, yy:3 ; x:57, y:171
xx:0, yy:4 ; x:0, y:228
xx:1, yy:4 ; x:57, y:228
xx:0, yy:5 ; x:0, y:285
xx:1, yy:5 ; x:57, y:285
xx:0, yy:6 ; x:0, y:342
xx:1, yy:6 ; x:57, y:342
xx:0, yy:7 ; x:0, y:399
xx:1, yy:7 ; x:57, y:399