public void rotate() { if (rotation == 0) { if (super.blocks[0].canMove(1, -1) && super.blocks[2].canMove(-1, 1) && super.blocks[3].canMove(0, -2)) { super.blocks[0].move(1, -1); super.blocks[2].move(-1, 1); super.blocks[3].move(0, -2); } rotation++; } else if (rotation == 1) { if (super.blocks[0].canMove(1, 1) && super.blocks[2].canMove(-1, -1) && super.blocks[3].canMove(2, 0)) { super.blocks[0].move(1, 1); super.blocks[2].move(-1, -1); super.blocks[3].move(2, 0); } rotation++; } else if (rotation == 2) { if (super.blocks[0].canMove(-1, 1) && super.blocks[2].canMove(1, -1) && super.blocks[3].canMove(0, 2)) { super.blocks[0].move(-1, 1); super.blocks[2].move(1, -1); super.blocks[3].move(0, 2); } rotation++; } else if (rotation == 3) { if (super.blocks[0].canMove(-1, -1) && super.blocks[2].canMove(1, 1) && super.blocks[3].canMove(-2, 0)) { super.blocks[0].move(-1, -1); super.blocks[2].move(1, 1); super.blocks[3].move(-2, 0); } rotation = 0; } }
/** * Move the Shape to be a given center. * * @param newCenter the new center of the shape */ public void setCenter(Point newCenter) { Point oldCenter = getCenter(); move(newCenter.x - oldCenter.x, newCenter.y - oldCenter.y); }
/** * Add one shape and move it by the vector (dx, dy) * * @param shape Shape to be added * @param dx Distance to move shape in x * @param dy Distance to move shape in y */ public void addShape(Shape shape, double dx, double dy) { addShape(shape); shape.move(dx, dy); }