gpt4 book ai didi

java - 比较二维 boolean 数组值?

转载 作者:行者123 更新时间:2023-12-01 11:54:27 25 4
gpt4 key购买 nike

我正在制作这个程序,它基本上是一个 Connect 4 game 。正如您在下面看到的,我有一组设置的圆圈 c0、c1、c2 等,以及一个重复的圆圈 c0d,它在每次单击按钮时生成并归结为可用的插槽。在“背景”中,我制作了一个二维矩阵,一个 boolean 数组,它可以帮助我决定比赛何时获胜(通过在行中出现 4 次相同的颜色。当然,我还有其他 6 行具有相同的颜色)功能也一样,但它们的作用基本相同。

Circle c0d = new Circle(64, 32, 32);

TranslateTransition translate = new TranslateTransition(
Duration.millis(750), c0d);
translate.setToX(0);
FadeTransition fade = new FadeTransition();
fade.setDuration(Duration.seconds(1));

GridPane.setConstraints(c0d, 0, 0);
GridPane.setHalignment(c0d, HPos.CENTER);
grid.getChildren().add(c0d);
if (c0.getFill() == Color.YELLOW) {
c0.setFill(Color.RED);
c1.setFill(Color.RED);
c2.setFill(Color.RED);
c3.setFill(Color.RED);
c4.setFill(Color.RED);
c5.setFill(Color.RED);
c6.setFill(Color.RED);
c0d.setFill(Color.YELLOW);
switch (x0) {
case 0:
translate.setToY(432);
x0++;
wl[5][0] = true;
break;
case 1:
translate.setToY(360);
x0++;
wl[4][0] = true;
break;
case 2:
translate.setToY(288);
x0++;
wl[3][0] = true;
break;
case 3:
translate.setToY(216);
x0++;
wl[2][0] = true;
break;
case 4:
translate.setToY(144);
x0++;
wl[1][0] = true;
break;
case 5:
translate.setToY(72);
x0++;
wl[0][0] = true;
butt0.setDisable(true);
break;
}
} else {
c0.setFill(Color.YELLOW);
c1.setFill(Color.YELLOW);
c2.setFill(Color.YELLOW);
c3.setFill(Color.YELLOW);
c4.setFill(Color.YELLOW);
c5.setFill(Color.YELLOW);
c6.setFill(Color.YELLOW);
c0d.setFill(Color.RED);
switch (x0) {
case 0:
translate.setToY(432);
x0++;
wl[5][0] = false;
break;
case 1:
translate.setToY(360);
x0++;
wl[4][0] = false;
break;
case 2:
translate.setToY(288);
x0++;
wl[3][0] = false;
break;
case 3:
translate.setToY(216);
x0++;
wl[2][0] = false;
break;
case 4:
translate.setToY(144);
x0++;
wl[1][0] = false;
break;
case 5:
translate.setToY(72);
x0++;
wl[0][0] = false;
butt0.setDisable(true);
break;
}
}

for (i = 5; i <= 0; i--) {
if (wl[i][0] == wl[i - 1][0] == wl[i - 2][0] == wl[i - 3][0]) {
System.out.println("WON");
break;
}

现在正如你所看到的,最后一个 for 循环通过比较一行中的位置来决定游戏何时获胜,如果它们都是“假”(即红色)或真(即黄色),则应该获胜可以在控制台输出。由于某种原因它没有显示。我错过了什么吗?

最佳答案

首先,你的for循环永远不会执行。您可以使用 i=5 进行初始化,条件为i <= 0 。由于初始化时条件为 false,因此循环将退出而不执行。

二、if中的条件没有做你认为它正在做的事情。您在这里需要一些 boolean 逻辑:您想要类似的东西

if (wl[i][0]==wl[i-1][0] && wl[i-1][0]==wl[i-2][0] && wl[i-2][0]==wl[i-3][0]) {
// ...
}

实际评估的方式是 wl[i][0]==wl[i-1][0]被评估,并评估为 truefalse 。然后将该值与 wl[i-2][0] 进行比较比较结果为truefalse 。最后将该比较与 wl[i-3] 进行比较。所以如果你有红色,红色,黄色,黄色( falsefalsetruetrue ),它将是 true 。 ( false==falsetrue ,所以 (false==false)==true )是 true等。类似地,RED、YELLOW、RED、YELLOW 将计算为 true (供读者练习...)。

最后,其余大部分逻辑对我来说并不是很清楚。您看起来正在尝试从 i=5 进行迭代降至 i=0 ;但随后访问元素i-1 , i-2数组的等显然不起作用。

关于java - 比较二维 boolean 数组值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28549391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com