/**
   * 현재 이 객체가 가지고 있는 테트리스 블록의 형테를 입력 받은 형태로 변경한다.
   *
   * @param TetrisBlocks
   */
  public void setShape(TetrisBlocks shape) {

    coordsTable =
        new int[][][] {
          {{0, 0}, {0, 0}, {0, 0}, {0, 0}}, // NoShape
          {{0, -1}, {0, 0}, {-1, 0}, {-1, 1}}, // SquareShape
          {{0, -1}, {0, 0}, {1, 0}, {1, 1}}, // LShape
          {{0, -1}, {0, 0}, {0, 1}, {0, 2}}, // Line
          {{-1, 0}, {0, 0}, {1, 0}, {0, 1}},
          {{0, 0}, {1, 0}, {0, 1}, {1, 1}},
          {{-1, -1}, {0, -1}, {0, 0}, {0, 1}},
          {{1, -1}, {0, -1}, {0, 0}, {0, 1}}
        };
    //				{ { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } }, // NoShape
    //				{ { 0, -1 }, { 0, 0 }, { -1, 0 }, { -1, 1 } },// ZShape
    //				{ { 0, -1 }, { 0, 0 }, { 1, 0 }, { 1, 1 } },// ZShape
    //				{ { 0, -1 }, { 0, 0 }, { 0, 1 }, { 0, 2 } },// Line
    //				{ { -1, 0 }, { 0, 0 }, { 1, 0 }, { 0, 1 } },// TShape
    //				{ { 0, 0 }, { 1, 0 }, { 0, 1 }, { 1, 1 } },// SquareShape
    //				{ { -1, -1 }, { 0, -1 }, { 0, 0 }, { 0, 1 } },// LShape
    //				{ { 1, -1 }, { 0, -1 }, { 0, 0 }, { 0, 1 } } }; // MirroredLShape

    for (int i = 0; i < 4; i++) {
      for (int j = 0; j < 2; ++j) {
        coords[i][j] = coordsTable[shape.ordinal()][i][j];
      }
    }
    nowShape = shape;
  }
 /** 현재 이 객체가 가지고 있는 테트리스 블록에 대한 형태를 랜덤으로 변경한다. */
 public void setRandomShape() {
   Random r = new Random();
   int x = Math.abs(r.nextInt()) % 7 + 1;
   TetrisBlocks[] values = TetrisBlocks.values();
   setShape(values[x]);
 }