public Figure(Panel workspace, FIGURE_TYPE figureType) { this.workspace = workspace; this.figureType = figureType; isStay = false; rotatingState = FIGURE_ROTATING_STATE.NORMAL; cubes = CreateFigure(figureType); }
private List <Point> CreateFigure(FIGURE_TYPE figureType) { List <Point> cubes = new List <Point>(); switch (figureType) { case FIGURE_TYPE.I: { for (int i = 0; i < 4; i++) { cubes.Add(new Point(4 * CUBE_SIZE, (i - 4) * CUBE_SIZE)); } break; } case FIGURE_TYPE.J: { cubes.Add(new Point(5 * CUBE_SIZE, -CUBE_SIZE)); cubes.Add(new Point(4 * CUBE_SIZE, -CUBE_SIZE)); cubes.Add(new Point(3 * CUBE_SIZE, -CUBE_SIZE)); cubes.Add(new Point(3 * CUBE_SIZE, -2 * CUBE_SIZE)); break; } case FIGURE_TYPE.L: { cubes.Add(new Point(3 * CUBE_SIZE, -CUBE_SIZE)); cubes.Add(new Point(4 * CUBE_SIZE, -CUBE_SIZE)); cubes.Add(new Point(5 * CUBE_SIZE, -CUBE_SIZE)); cubes.Add(new Point(5 * CUBE_SIZE, -2 * CUBE_SIZE)); break; } case FIGURE_TYPE.O: { cubes.Add(new Point(5 * CUBE_SIZE, -2 * CUBE_SIZE)); cubes.Add(new Point(4 * CUBE_SIZE, -2 * CUBE_SIZE)); cubes.Add(new Point(4 * CUBE_SIZE, -CUBE_SIZE)); cubes.Add(new Point(5 * CUBE_SIZE, -CUBE_SIZE)); break; } case FIGURE_TYPE.S: { cubes.Add(new Point(5 * CUBE_SIZE, -2 * CUBE_SIZE)); cubes.Add(new Point(4 * CUBE_SIZE, -2 * CUBE_SIZE)); cubes.Add(new Point(4 * CUBE_SIZE, -CUBE_SIZE)); cubes.Add(new Point(3 * CUBE_SIZE, -CUBE_SIZE)); break; } case FIGURE_TYPE.T: { cubes.Add(new Point(4 * CUBE_SIZE, -2 * CUBE_SIZE)); cubes.Add(new Point(3 * CUBE_SIZE, -CUBE_SIZE)); cubes.Add(new Point(4 * CUBE_SIZE, -CUBE_SIZE)); cubes.Add(new Point(5 * CUBE_SIZE, -CUBE_SIZE)); break; } case FIGURE_TYPE.Z: { cubes.Add(new Point(4 * CUBE_SIZE, -2 * CUBE_SIZE)); cubes.Add(new Point(5 * CUBE_SIZE, -2 * CUBE_SIZE)); cubes.Add(new Point(5 * CUBE_SIZE, -CUBE_SIZE)); cubes.Add(new Point(6 * CUBE_SIZE, -CUBE_SIZE)); break; } default: throw new Exception("Wrong type of Figure"); } return(cubes); }