Помощь в обучении программированию — страница 5

  • Просмотров 3131
  • Скачиваний 202
  • Размер файла 25
    Кб

падения, нет возврат к обычному * Основными процедурами являются: TimerTick, DoFall TimerTick Реакцию на событие от таймера можно представить следующим образом: Проверить есть текущая фигура Assigned(fCurrentFigure) Если есть проверить может ли она сдвинуться на клетку вниз fCurrentFigure.CanDown Если может, то сдвинуть fCurrentFigure.Down Иначе обрабатываем ситуацию упал (для бомб падение предполагает очистку других ячеек поля) fCurrentFigure.Falled Если нет, то проверяется

заполненность хотя бы одной из линий поля полностью Если таковая находится то она удаляется fField.DelFullLine Иначе проверяется заполненность ячеек из вернего уровня fField.IsOverflow Если хотя бы одна занята - игра заканчивается Иначе создается очередная фигура случайным образом InitCurrentFigure DoFall Реакцию на событие от пользователя "отпускание фигуры" можно представить следующим образом: Проверить есть текущая фигура Assigned(fCurrentFigure) Если

есть то пока она может сдвигаться вниз (fCurrentFigure.CanDown) сдвигать ее вниз (fCurrentFigure.Down) обрабатываем ситуацию упал (для бомб падение предполагает очистку других ячеек поля) fCurrentFigure.Falled RotateAgainst, RotateAlong Реакцию на событие от пользователя "поворот фигуры" можно представить следующим образом: Проверить идет ли игра и есть текущая фигура IsGoing and Assigned(fCurrentFigure) Если есть то повернуть фигуру fCurrentFigure:=fCurrentFigure.Rotate При выполнении

перечисленных операций с фигурой совершенно не важно какая она на самом деле. Операции проводятся с базовой фигурой, которая имеет лишь методы по своему повороту, сдвигу. Реализация всех этих действий выполняется в потомках объекта базовая фигура (TBaseFigure), перечисленных ниже. В потомках даже приходиться лишь правильно определить координаты относительно базовой точки, остальное сделает TBaseFigure! TBaseFigure - класс базовая фигура

позволяющий задать очертания фигуры и методы по ее перемещению, повороту. Включает в себя следующие поля Cell ячейка (TFieldCell) Описание основной ячейки - цвет, текстура, номер находящийся в ней. Xbase координата по X (integer) Координаты базовой точки фигуры на поле Ybase координата по Y (integer) DownLimit отступ снизу (integer) Отступы вниз, влево, вправо от базовой точки до границ фигуры, чтобы не вылазить за границы поля при перемещении. Т.е. общие

очертания фигуры всегда прямоугольник. Конкретно какие ячейки она занимает в этом пространстве опредялются для потомков индивидуально RightLimit отступ справа (integer) LeftLimit отступ слева (integer) методы: Rotate(AlongClock:boolean) Реализует поворот фигуры по или против часовой стрелки CanDown Определяет - может ли фигура упасть на одну клетку вниз Down Реализует фактического падения фигуры Move(Left:boolean;AField:TField) Реализует фактическое перемещение фигуры