微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将二维 ArrayList 放置到另一个二维 ArrayList俄罗斯方块?

如何解决如何将二维 ArrayList 放置到另一个二维 ArrayList俄罗斯方块?

巧,

我正在创建一个俄罗斯方块算法,我一直坚持这个逻辑。

我有一个看起来像这样的 2d ArrayList,

[0,0] = 0
[0,0] = 1
[0,0] = 2
[0,0] = 3
[0,0] = 4
[0,0] = 5
[0,0] = 6
[0,0] = 7
[0,0] = 8
[0,0] = 9
[0,0] = 10
[0,0] = 11
[0,0] = 12
[0,0] = 13
[0,0] = 14
[0,1,0] = 15
[0,0] = 16
[0,0] = 17
[1,0] = 18
[1,0] = 19
[1,1] = 20

我想将像这样的 tetromino 的 2d arrayList 放在上述数组的 [3] 列中。

[1,0]
[0,1]

or
[1,0]
[1,1]... 

我怎样才能有效地把它放在板上? 因此,如果我们将样本 1 放入其中,则棋盘矩阵将如下所示。

[0,1] = 20

解决方法

您始终可以编写自己的方法来执行此操作。这是您要实现的目标的 jshell 输出:

jshell> void insert(int[][]  board,int[][] tile,int tileStartX,int tileStartY) {
   ...>     if (tile == null || tile.length == 0 || tile[0].length == 0) {
   ...>         return;
   ...>     }
   ...>     if (tileStartX < 0 || tileStartY < 0 || tileStartX + tile.length >= board.length || tileStartY + tile[0].length >= board[0].length) {
   ...>         throw new IllegalArgumentException("Tile out of bounds");
   ...>     }
   ...>     for (int[] row: tile) {
   ...>         int y = tileStartY;
   ...>         for (int elem: row) {
   ...>             board[tileStartX][y++] = elem;
   ...>         }
   ...>         tileStartX++;
   ...>     }
   ...> }
|  modified method insert(int[][],int[][],int,int)

jshell> int[][] a = new int[10][10];
a ==> int[10][] { int[10] { 0,... 0,0 } }

jshell> int[][] b = new int[][]{{1,1,0},{0,1}}
b ==> int[2][] { int[3] { 1,0 },int[3] { 0,1 } }

jshell> insert(a,b,2,3)

jshell> Arrays.stream(a).forEach(r -> System.out.println(Arrays.toString(r)))
[0,0]
[0,0]

jshell>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。