0
        if(loopCount % (20 - loopCount / 100) == 0) {
            if(dropBlock() == false) {
                mode = -1;
                loopCount = 1;
            }
            if(loopCount == 1900)
                loopCount--;
        }
        loopCount++;

来自java写的书的俄罗斯方块程序。我只是不明白为什么要使用这样一段代码来控制块的下降速度以及它是如何工作的。谢谢 !

loopCount 的初始值为 1,如果游戏结束,dropBlock 将返回 false。这部分包含在主循环中。和模式无关。我很抱歉,但我不能在这里查看整个程序。

4

2 回答 2

0

似乎它设置为让 loopcount 从 1 开始,并让我们使用一个表来检查if(loopCount % (20 - loopCount / 100) == 0) {

loopCount < 100, loopCount/100 = 0,所以 loopCount % 20 对于 20、40、60 和 80 返回 true。假设 loopCount 是 100 - 199。现在我们正在检查它是否可以被 19 整除,对于 200-300 可以被18. 不过,我不确定他到底想达到什么目的。然后它检查它是否可能无法删除块,(dropBlock 可能试图删除块,并返回 true 表示成功,返回 false 表示失败。然后如果失败,它将模式设置为 -1(可能退出?)。然后一旦 loopCount达到 1900,它阻止它上升(通过在 之前减少到 1899 loopCount++;,它基本上减少然后增加,所以什么都不做(保持在 1900)

于 2012-08-30T03:12:52.543 回答
0

该代码是如何不写好代码的一个很好的例子。它充满了神奇的数字(1900、20、100),这让你很难解释为什么你在做你正在做的事情。

但是实现这一点并打印出值表明 loopCount 的值只是从 1 一直增长到 1900,一旦达到 1900,它就会停留在那里。

所以在我看来,逻辑的作用是减少到 1899 并在每次迭代达到 1900 时增加到 1900。

于 2012-08-30T03:22:37.120 回答