所以,我想做一个匹配的游戏。
基本上,有6个彩色编码的矩形。依次是:红、蓝、绿、黄、橙、紫。
有一些相同颜色的按钮是随机排列的,因此它们不匹配。红色按钮在绿色矩形中,橙色按钮在黄色矩形中,等等。
当你点击按钮时,比如说,红色按钮。然后按钮会被发送到红色的矩形,但是它会将它的当前位置与当前在红色上的任何按钮交换。
但是,我不知道该怎么做。我尝试用一个伪打印方法在for循环内的数组中进行交换,但似乎不起作用。我需要做什么?我需要创建一个方法来返回数组中第一个点上的按钮吗?
我在javafx中专门为按钮寻找swap方法,但找不到任何实质性的方法。
如果你想看看我的代码,我会链接到这里。https://pastebin.com/geg5fvwt
另外,有时当我尝试运行程序时,可能会出现错误,程序无法启动。重新启动似乎可以解决这个问题。
我将粘贴需要帮助的部分代码,并提供一些上下文:
我把红色、蓝色、绿色、黄色、橙色和紫色的按钮排成一排 buttons[]
索引为0-5。我尝试使用交换数组行和线性搜索功能,但都没有成功。 0
是按钮的位置 red.
当单击红色按钮时,它应该将红色切换为红色矩形。没有简单的方法可以做到这一点,因为矩形是单独构造的,而不是在任何组或数组或类似的东西中。
@Override
public void handle(ActionEvent e) {
int key = 0;
for (int i = 0; i < buttons.length; i++) {
if (0 == buttons[i]) {
key = i;
System.out.println(key);
}
}
int temp = buttons[0];
buttons[0] = 0;
buttons[key] = temp;
}
});
所以最终发生的是。。。没有什么。当按下键时,它会打印一次,然后在一行上继续打印0。我不知道该怎么做,但我需要为每个按钮设置一个动作事件。
主要的事情是:我需要的按钮,以实际交换到正确的地方,一旦点击。
1条答案
按热度按时间f5emj3cl1#
我可能会将按钮位置存储在一个数组中,每个索引表示一个矩形{0,1,2,3,4,5}表示对应矩形上的每个按钮,{1,0,2,3,4,5}表示红色和蓝色按钮交换。当按下按钮时,您可以更改按钮的颜色,而不是实际更改按钮的位置。例如,如果你从{1,0,2,3,4,5}开始,按下红色按钮,第一个按钮(因为红色是索引0)的颜色会变为红色,你点击的按钮会变为索引0中的任何颜色,在本例中是1(蓝色)。更改这两个按钮的颜色后,在阵列中镜像此开关,以便正确记录游戏状态。