所以我尝试用 Java 编写俄罗斯方块代码,并且每个部分都使用 JLabels。我使用 Runnable 计时器让碎片向下移动,然后使用带有执行器的 if 语句来控制碎片何时停止移动。 我遇到的问题是我应该如何对这些部分进行编程,以便当它们彼此交互时它们停止向下移动并触发执行器关闭。我知道我想对块进行编程,使其在其前面的块的颜色不是黑色时停止,这表明那里有一个块,但我需要帮助从技术上解决这个问题。
例如:
Runnable timer = new Runnable() {
public void run() {
if((825 - (piece.getSize().getHeight() + 40 + piece.getY()) < 1)) {
executor.shutdown();
block();
time();
}
else if(piece2 != null && (825 - (piece2.getSize().getHeight() + 40 + piece2.getY()) < 1)) {
executor.shutdown();
block();
time();
}
}
executor.scheduleAtFixedRate(timer, 2, 1, TimeUnit.SECONDS);
}
piece2 指的是另一块,仅用于我以前使用pieces 来配置它的形状。
我尝试制作一个块来测试另一个块前面的颜色,但我无法做到这一点,因为我要么只测试背景颜色,要么测试实际块的颜色。在这种情况下,我需要一种方法来使实际块前面的块适应当前的颜色,无论是背景还是块,但我不知道该怎么做。
一些建议: