我有一个 [4,4] 的数组
只有 X 是我“知道”的,其他的都是通过简单的双重循环计算得出的。
x 0 0 0
0 0 1 0
0 1 1 0
0 1 0 0
我需要一个函数来将这个数组旋转90度,同时保持x位置不变。(它应该是俄罗斯方块游戏中的一个元素)
x 0 0 0
1 1 0 0
0 1 1 0
0 0 0 0
我知道一些硬编码排列的方法,但这并不能让我学到什么东西,而且实际上相当无聊。
非常感谢您的帮助 :>
我有一个 [4,4] 的数组
只有 X 是我“知道”的,其他的都是通过简单的双重循环计算得出的。
x 0 0 0
0 0 1 0
0 1 1 0
0 1 0 0
x 0 0 0
1 1 0 0
0 1 1 0
0 0 0 0
我知道一些硬编码排列的方法,但这并不能让我学到什么东西,而且实际上相当无聊。
非常感谢您的帮助 :>
我不确定您如何将矩阵旋转90度,同时仍然使旋转后的左上角X在左上角,但是要旋转90度,我会创建一个新数组,交换行和列并水平翻转。
int[][] start = new int[4][];
start[0] = new int[4] { x, 0, 0, 0 }
start[1] = new int[4] { 0, 0, 1, 0 }
start[2] = new int[4] { 0, 1, 1, 0 }
start[3] = new int[4] { 0, 1, 0, 0 }
int[][] rotate = new int[4][];
for (int i=0; i<4; i++) rotate[i] = new int[4];
for (int i=0; i<4; i++)
for (int j=0; j<4; j++)
rotate[i][j] = start[j][i];
旋转完成:
0, 0, 0, 0,
0, 0, 1, 1,
0, 1, 1, 0,
0, 0, 0, 0,
for (int i=0; i<4; i++)
for (int j=0; j<4; j++)
rotate[i][3-j] = start[j][i];
旋转完成后显示如下:
0, 0, 0, 0,
1, 1, 0, 0,
0, 1, 1, 0,
0, 0, 0, 0,
rotate[i][j] = start[j][3-i];
)