示例#1
0
  public void paint(Graphics g) {
    super.paint(g);

    Dimension size = getSize();

    // Position of new piece on board
    int boardTop = (int) size.getHeight() - BoardHeight * squareHeight();

    for (int i = 0; i < BoardHeight; ++i) {
      for (int j = 0; j < BoardWidth; ++j) {
        Tetrominoes shape = shapeAt(j, BoardHeight - i - 1);
        if (shape != Tetrominoes.NoShape)
          drawSquare(g, 0 + j * squareWidth(), boardTop + i * squareHeight(), shape);
      }
    }

    if (curPiece.getShape() != Tetrominoes.NoShape) {
      for (int i = 0; i < 4; ++i) {
        int x = curX + curPiece.x(i);
        int y = curY - curPiece.y(i);
        drawSquare(
            g,
            0 + x * squareWidth(),
            boardTop + (BoardHeight - y - 1) * squareHeight(),
            curPiece.getShape());
      }
    }
  }
示例#2
0
  private void pieceDropped() {
    for (int i = 0; i < 4; ++i) {
      int x = curX + curPiece.x(i);
      int y = curY - curPiece.y(i);
      board[(y * BoardWidth) + x] = curPiece.getShape();
    }

    removeFullLines();

    if (!isFallingFinished) newPiece();
  }
示例#3
0
  private boolean tryMove(Shape newPiece, int newX, int newY) {
    for (int i = 0; i < 4; ++i) {
      int x = newX + newPiece.x(i);
      int y = newY - newPiece.y(i);
      if (x < 0 || x >= BoardWidth || y < 0 || y >= BoardHeight) return false;
      if (shapeAt(x, y) != Tetrominoes.NoShape) return false;
    }

    curPiece = newPiece;
    curX = newX;
    curY = newY;
    repaint();
    return true;
  }