Java写俄罗斯方块游戏,地图怎样存储方块数组信息?

public class BlockShapeI extends Block {
  public int shape[][][] = { 
    { { 1, 1, 1, 1 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } },
        { { 0, 1, 0, 0 }, { 0, 1, 0, 0 }, { 0, 1, 0, 0 }, { 0, 1, 0, 0 } },
        { { 0, 0, 0, 0 }, { 1, 1, 1, 1 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } },
        { { 0, 1, 0, 0 }, { 0, 1, 0, 0 }, { 0, 1, 0, 0 }, { 0, 1, 0, 0 } }, };


}
    //这是方块子类继承一个Block父类,一共七中类型的方块
    方块落到底的时候怎样把它的信息保存到地图数组里,然后再生成新的方块
    再判断消行?

    开始游戏地图全是0
    public void initMap()// 初始化这个地图
{
    for (int i = 0; i < mapRow; i++) {
        for (int j = 0; j < mapCol; j++) {
            map[i][j] = 0;
        }
    }
}

//这是我写的一个保存的方法,但是一执行就报下标越界
public void add(int row ,int col,int dir) {
    System.out.println("执行了");
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j <4; j++) {
            if (shape()[dir][i][j] == 1) {
                map()[col+i][row + j] = 1;
            }
        }
    }
}

//这个add方法我是写在方块下落的方法里,当判断方块到底就执行它
传入的坐标是方块到底的坐标

希望大佬有空帮我看一哈,万分感谢!

add你是怎么调用的。也就是说,col row传入的是多少