gpt4 book ai didi

java - 旋转二维数组中的 block

转载 作者:行者123 更新时间:2023-11-30 04:53:19 25 4
gpt4 key购买 nike

我正在制作一个类似于著名游戏俄罗斯方 block 的程序,在旋转方 block 时遇到了一些问题。

我知道您可以使用“x = -y”和“y = x”在坐标系中旋转图形,但问题是因为我使用整数数组来表示 block ,所以事情变得如此困难得多。

我的数组看起来像:

int[][] space = new int[20][10];

如果坐标包含 block ,则值为 1,否则为 0。

那么如何在该空间中旋转一个 block 而不会遇到负数的麻烦?

最佳答案

这是一个示例片段(使用 0 和 1 重用 int[][],这也可以使用 boolean 数组来完成):

private static final int[][] piece = new int[][] {
{ 0, 1, 0, },
{ 1, 1, 1, },
};

您可以这样做旋转一 block :

private static int[][] rotate( final int[][] piece ) {
final int[][] res = new int[piece[0].length][piece.length];
for (int x = 0; x < piece.length; x++) {
for (int y = 0; y < piece[0].length; y++) {
res[(res.length-1)-y][x] = piece[x][y];
}
}
return res;
}

起始部分:

010
111

这是旋转( block ):

01
11
01

这是旋转(旋转(片)):

111
010

这是旋转(旋转(旋转(片))):

10
11
10

关于java - 旋转二维数组中的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9405058/

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