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