【发布时间】:2018-04-30 04:45:44
【问题描述】:
我目前正在开发基于图块的 2d 游戏。目前,我正在编写一个程序来拯救整个世界。一般来说,一个世界是 10000 x 10 = 1.100.000 块大。显然,这对 java 来说应该不是问题,但确实如此。
这是我的循环:
Material[][] blocks = g.gameState.getLevel().tiles;
int y = 0;
int blocksHor = g.gameState.getLevel().getBlocksHor();
for(int x = 0; x < blocksHor; x++) {
world += blocks[y][x] + " ";
if(x >= blocksHor - 1) {
x = 0;
y++;
System.out.println("LAYER " + y + " => " + (System.currentTimeMillis() - now) + " ms");
now = System.currentTimeMillis();
}
}
这个循环有点难以理解,但我已经尽可能地优化了。这是控制台输出:
LAYER 1 => 86 ms
LAYER 2 => 276 ms
LAYER 3 => 424 ms
LAYER 4 => 618 ms
LAYER 5 => 561 ms
LAYER 6 => 541 ms
LAYER 7 => 755 ms
LAYER 8 => 885 ms
LAYER 9 => 1036 ms
这些过程在结束时最多需要 50 秒或更长时间。
这个循环有什么问题?老实说,我不知道我应该如何解决这个问题。
谢谢你:) -菲尔
【问题讨论】:
-
也许可以试试StringBuilder?
标签: java arrays for-loop iteration 2d-games