gpt4 book ai didi

java - 瓷砖随着旋转从魔方中消失

转载 作者:行者123 更新时间:2023-12-02 03:04:05 25 4
gpt4 key购买 nike

我正在研究 2x2 魔方,并且在使用我的程序进行一侧旋转时遇到问题。立方体是正方形的二维数组。我只是想逆时针旋转 90 度。

这就是发生的事情 /image/78Xqg.jpg

我改变了颜色,这样我就可以看到特定的方 block 以及它们是如何变化的。我尝试更改顺序,一次移动特定的部分,看看问题是否只是重叠的部分(没有这样的运气)。

//square class

public class square implements Comparable {
int c;
private Rectangle r;
int xpos, ypos, width, height;

public square(int a, int x, int y) {
c = a;
xpos = x;
ypos = y;

r = new Rectangle(xpos, ypos, 50, 50);

}
//some unused methods
}

//inside the cube class
public class cube{

square[] temp = new square[4]

square[][] sq= new square[6][4]
//two for loops make squares and fills the sq 2d array
//the result is in the imgur link

public void turnVc(){

temp= sq[2];

sq[2][0]=temp[1];

sq[2][1]=temp[3];

sq[2][2]=temp[2];

sq[2][3]=temp[0];

}
}

我希望输出是逆时针旋转的原始图像。

最佳答案

tmp 是一个指针,它与 sq[2] 指针指向同一对象。这就是为什么当您更改 sq[2] 内容时,您也会更改 tmp 的原因。我认为不要分配“temp= sq[2];”您应该执行以下操作:

temp = new square[4];
for (int i = 0; i < 4; i++) {
temp[i] = sq[2][i];
}

编辑:我认为您可以做的一点改进是您不需要保存所有 sq[2] 数组,您只能保存第一项。我会这样做(tmp 现在是一个正方形,而不是一个数组):

tmp = sq[2][0];
sq[2][0] = sq[2][1];
sq[2][1] = sq[2][3];
sq[2][3] = sq[2][2];
sq[2][2] = tmp;

关于java - 瓷砖随着旋转从魔方中消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57032881/

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