int [] []不知怎的没有重新融化

时间:2016-01-29 01:09:40

标签: java arrays

我本质上是在尝试制作一个程序来决定在10x10网格上放置一块(俄罗斯方块式)的最佳位置。我通过空位的数量确定给定游戏状态中的最佳位置(越多越好)。完整的行和列清除。我的方法insertPiece(grid,piece,x,y)似乎在我的findBestMove方法中改变了网格变量,因为下一次迭代包含了这个部分。

 public static int[][] findBestMove(int[][] grid,Piece piece){
    int mostEmpty = 0;
    int bestX = 0;
    int bestY = 0;

    for(int i=0;i<grid.length;i++){
        for(int j=0;j<grid[i].length;j++){
            if(isPlaceable(grid,piece,i,j)){


                int[][] temp = insertPiece(grid,piece,i,j); 

                if(countEmpty(temp)>mostEmpty){
                    bestX = i;
                    bestY = j;
                }
            }
        }
    }

    int[][] temp = insertPiece(grid,piece,bestX,bestY);
    return clearRows(temp);



}
public static int[][] insertPiece(int[][] grid, Piece piece, int x, int y){

    printGrid(grid);
    int[][] pieceGrid = piece.getGrid();

    for(int i=0;i<pieceGrid.length;i++){
        for(int j=0;j<pieceGrid[i].length;j++){
            try {
                if (grid[i + x][j + y] < pieceGrid[i][j]) {
                    grid[i + x][j + y] = pieceGrid[i][j];
                } else if (grid[i + x][j + y] == 1) {
                    break;
                }
            }
            catch(Exception e){
               // break;
            }


        }
    }
    printGrid(grid);


    return grid;

}

这是最终印刷品的样子

0000000000
0100100100
1111111110
0100100100
1111111110
0100100100
1111111110
0100100100
1111111110
0000000000

这是插件

int[][] gridPyramid = {{0,0,0},
                       {0,1,0},
                       {1,1,1}};

我遗漏了大量的代码以避免使帖子混乱,如果您需要任何澄清,请告诉我

1 个答案:

答案 0 :(得分:0)

您实际上正在更改网格:

grid[i + x][j + y] = pieceGrid[i][j];