Помощь в обучении программированию — страница 7
Проверить не выходит ли правая граница фигуры за пределы поля (Xbase<AField.FieldCountX-RightLimit-1) и проверить не попадают ли в случае перемещения клетки данной фигуры на клетки другой фигуры CheckEach(IsEmptyCell,Xbase+1,Ybase) Если не попадает то Очистить все клетки занятые фигурой (ClearCurrent) Увеличить координату по X базовой точки Нарисовать во все клетки фигуры (MakeCurrent) MakeCurrent Для всех клеток принадлежащих фигуре вызвать метод по рисованию ячейки (FillCell) ClearCurrent Для всех клеток принадлежащих фигуре вызвать метод по стиранию ячейки (ClearCell) Используются следующие потомки класса TBaseFigure TOneCellFigure Одноклеточная фигура TBombFigure Бомба TBombFigureExtra Бомба-2 TTwoCellFigureH Двухклеточная фигура расположенная горизонтально TTwoCellFigureV Двухклеточная фигура расположенная вертикально TThreeCellFigure13 Трехклеточная прямая фигура расположенная горизонтально TThreeCellFigure20 Трехклеточная прямая фигура расположенная вертикально TThreeCellFigure12 Трехклеточный уголок. Соответствие цифр расположению фигуры на площади следующее: 0 3 1 2 TThreeCellFigure23 TThreeCellFigure30 TThreeCellFigure01 TFourCellBend0145 Четырехклеточный изгиб извилистая дорога. Соответствие цифр расположению фигуры на площади следующее: 0 1 2 3 4 5 6 7 8 TFourCellBend1436 TFourCellBend0347 TFourCellBend3412 TFourCellG1036 Четырехлеточная фигура типа буквы L или Г. Соответствие цифр расположению фигуры на площади следующее: 0 1 2 3 4 5 6 7 8 TFourCellG1476 TFourCellG0125 TFourCellG0345 TFourCellG0147 TFourCellG0367 TFourCellG3012 TFourCellG3452 TFourCellT0 Четырехлеточная фигура типа буквы Т. Соответствие цифр расположению выпирающей клетки фигуры на площади следующее:0 3 1 2 TFourCellT1 TFourCellT2 TFourCellT3 TFourCellFigureH Четырехклеточная прямая фигура расположенная горизонтально TFourCellFigureV Четырехклеточная прямая фигура расположенная вертикально TFourCellBox Квадрат 2х2 Базовая точка Перекрытие виртуальных методов для реализации конкретной фигуры (например TThreeCellFigure23) осуществляется следующим образом: AfterInit LeftLimit:=1 DownLimit:=1 Установка значений отступов для данной фигуры. влево на единицу и вниз на единицу CheckEach Proc(Xabs,Yabs-1)and Proc(Xabs,Yabs)and Proc(Xabs-1,Yabs) Вызов процедуры Proc для конретных ячеек. Обычно вызываются процедуры для этих ячеек по рисованию, стиранию, проверки отсутствия в данной ячейке другой фигуры. Для данной фигуры ячейками относящимися к данной фигуре являются ячейки расположенные относительно базовой 1) на одну ниже по Y, 2) в том же месте что и базовая 3) на одну левее по X GetTwinFigure if AlongClock then GetTwinFigure:=TThreeCellFigure30 else GetTwinFigure:=TThreeCellFigure12 Если вращение вдоль часовой стрелки то фигурой-близнецом будет TThreeCellFigure30 Если против часовой то TThreeCellFigure12 SetBaseCell Cell.Color:=RandomColors[25]; Cell.TextureNum:=26 Установка определенных значений для текста и текстуры фигуры данного типа Для остальных фигур перекрытие
Похожие работы
- Практические занятия
- Рефераты
- Рефераты
- Рефераты