我不知道如何描述我的问题,但我想让这段代码更短。而不是单独创建每个砖,我将如何创建一个为我创建砖块的算法? (使用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最大砖
我怎么写这个?
感谢您的帮助:)
答案 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;
}
}