如何创建一个初始化变量的算法?

时间:2015-05-16 06:15:41

标签: java arrays algorithm

我不知道如何描述我的问题,但我想让这段代码更短。而不是单独创建每个砖,我将如何创建一个为我创建砖块的算法? (使用for循环或什么?)

以下是我的代码部分:

    bricks[1] = new GameObject(20, 90, BRICK_HEIGHT, BRICK_WIDTH, Colour.BLUE);
    bricks[2] = new GameObject(60, 90, BRICK_HEIGHT, BRICK_WIDTH, Colour.BLUE);
    bricks[3] = new GameObject(100, 90, BRICK_HEIGHT, BRICK_WIDTH, Colour.BLUE);
    bricks[4] = new GameObject(140, 90, BRICK_HEIGHT, BRICK_WIDTH, Colour.BLUE);
    bricks[5] = new GameObject(180, 90, BRICK_HEIGHT, BRICK_WIDTH, Colour.BLUE);
    bricks[6] = new GameObject(220, 90, BRICK_HEIGHT, BRICK_WIDTH, Colour.BLUE);

所以前两个值可以这样表示: x = 20; y = 90;

x每次应增加 40 当x为540时,y应该仅增加60

在y递增后,

x应重置回 20

42最大砖

我怎么写这个?

感谢您的帮助:)

2 个答案:

答案 0 :(得分:3)

将代码抛出循环并递增(x?)值:

int xCounter = 20;
int yCounter = 90;
for (int i = 0; i < 42; i++) {
    // Increment y
    if (x == 540) {
        yCounter += 60;
        xCounter = 0;
    }

    bricks[i] = new GameObject(xCounter, yCounter, BRICK_HEIGHT, BRICK_WIDTH, Colour.BLUE);

    // Increment x
    xCounter += 20;
}

编辑:更新了逻辑;没有看到额外的要求。这里的技巧是检查x等于540并增加y计数器并相应地重置x计数器。

请注意,我们使用循环的当前索引(变量'i')来动态填充数组,因为我们迭代42次(brick [i] = ...)。

答案 1 :(得分:2)

int x = 20, y = 90;
for (int i = 0; i < 42; i++) {
    bricks[i] = new GameObject(x, y, BRICK_HEIGHT, BRICK_WIDTH, Colour.BLUE);
    x += 20;
    if ( x >= 540 ) {
        y += 60;
        x = 0;
    }
}