МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Помощь в обучении программированию

    | |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:TFiel|Реализует фактическое перемещение фигуры вправо или |

    |d) |влево. |

    |Falled |Реализует реакцию после того как фигура упала. |

    | |Перекрыто в бомбе и очищает клетку под ней |

    |MakeCurrent |Реализует фактическое рисование фигуры на поле |

    |IsEmptyCell |Определяет свободна ли клетка (i,j) на поле |

    |IsEmptyAndOnFieldCell |Определяет входит ли клетка (i,j) на поле и свободна|

    | |ли она. При таком подходе работает быстрей чем два |

    | |вызова - отдельная процедура "входит ли на поле" и |

    | |"свободная ли она" |

    |ClearCell(i,j:integer) |Реализует очистку одной клетки (i,j)принадлежащей |

    | |фигуре |

    |FillCell(i,j:integer) |Реализует рисование в определенную клетку (i,j) |

    |AfterInit |Обеспечивает возможность изменения полей наследуемой|

    | |фигуры |

    |CheckEach(Proc:TCheckProc;Xabs|Конкретно определяет какие ячейки используются |

    |,Yabs:integer) |фигурой. Процедура обязательно перекрывается в |

    | |потомках. |

    |ClearCurrent |Обеспечивает стирание фигуры с поля (перед шагом |

    | |вниз/влево/вправо/падения) |

    |GetTwinFigure(AlongClock:boole|Обеспечивает получение фигуры-близнеца. Т.е той |

    |an) |фигуры, которая получается после поворота данной под|

    | |углом 90 или -90 градусов. Перекрыто в конкретных |

    | |потомках. Если нет, то поворот не осуществляется. |

    | |Например для квадрата. |

    |SetBaseCell |Обеспечивает установку конкретного номера текстуры в|

    | |потомке, таким образом обеспечивается одна фигура, |

    | |один цвет. |

    Основными методами являются

    |Rotate |Получить фигуру близнец. (GetTwinFigure) |

    | |Если фигура близнец есть (TwinConstructor<>nil) |

    | |то создаем фигуру близнец на основе своих параметров|

    | |TwinConstructor.CreateTwin |

    | |проверяем не залазит ли созданная фигура на клетки |

    | |занятые другими фигурами Twin.CheckEach |

    | |Если не залазит то |

    | |Очистить все клетки занятые текущей фигурой |

    | |(ClearCurrent) |

    | |Нарисовать во все клетки фигуры близнеца |

    | |(Twin.MakeCurrent) |

    | |Возвратить как результат выполнения функции |

    | |созданного близнеца (Rotate:=Twin) |

    | |Освободить ресурсы занятые текущей фигурой (Free) |

    | |Иначе если залазит то удалить созданного близнеца |

    | |(Twin.Free) |

    | |Возвратить как результат выполнения функции себя, |

    | |так поворот не удался и фигура падает в прежнем виде|

    | |(Rotate:=self) |

    |CanDown |Проверить не выходит ли нижняя граница фигуры за |

    | |пределы поля (Ybase>DownLimit) и проверить не |

    | |попадают ли в случае перемещения вниз клетки данной |

    | |фигуры на клетки другой фигуры |

    | |CheckEach(IsEmptyCell,Xbase,Ybase-1) |

    |Down |Очистить все клетки занятые фигурой (ClearCurrent) |

    | |Уменьшить координату по Y базовой точки |

    | |Нарисовать во все клетки фигуры (MakeCurrent) |

    |Move |Если движение фигуры налево |

    | |Проверить не выходит ли левая граница фигуры за |

    | |пределы поля (Xbase>LeftLimit) и проверить не |

    | |попадают ли в случае перемещения клетки данной |

    | |фигуры на клетки другой фигуры |

    | |CheckEach(IsEmptyCell,Xbase-1,Ybase) |

    | |Если не попадает то |

    | |Очистить все клетки занятые фигурой (ClearCurrent) |

    | |Уменьшить координату по X базовой точки |

    | |Нарисовать во все клетки фигуры (MakeCurrent) |

    | |Если движение фигуры направо |

    | |Проверить не выходит ли правая граница фигуры за |

    | |пределы поля (Xbase

    | |и проверить не попадают ли в случае перемещения |

    | |клетки данной фигуры на клетки другой фигуры |

    | |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) осуществляется следующим образом:

    |AfterIni|LeftLimit:=1 |Установка значений отступов для данной фигуры. влево|

    |t |DownLimit:=1 |на единицу и вниз на единицу |

    |CheckEac|Proc(Xabs,Yabs-1)and |Вызов процедуры Proc для конретных ячеек. Обычно |

    |h |Proc(Xabs,Yabs)and |вызываются процедуры для этих ячеек по рисованию, |

    | |Proc(Xabs-1,Yabs) |стиранию, проверки отсутствия в данной ячейке другой|

    | | |фигуры. |

    | | |Для данной фигуры ячейками относящимися к данной |

    | | |фигуре являются ячейки расположенные относительно |

    | | |базовой |

    | | |1) на одну ниже по Y, |

    | | |2) в том же месте что и базовая |

    | | |3) на одну левее по X |

    |GetTwinF|if AlongClock then |Если вращение вдоль часовой стрелки то |

    |igure |GetTwinFigure:=TThree|фигурой-близнецом будет TThreeCellFigure30 [pic] |

    | |CellFigure30 |Если против часовой то TThreeCellFigure12 [pic] |

    | |else | |

    | |GetTwinFigure:=TThree| |

    | |CellFigure12 | |

    |SetBaseC|Cell.Color:=RandomCol|Установка определенных значений для текста и |

    |ell |ors[25]; |текстуры фигуры данного типа |

    | |Cell.TextureNum:=26 | |

    Для остальных фигур перекрытие осуществляется аналогично.

    TOptionsForm - класс формы настроек. Включает в себя такие объекты как:

    |MainPageControl; |Закладки |Расположен на форме настроек, включает в |

    | |(TPageControl*) |себя закладки (tabFigures) |

    |tabFigures |Закладка |Расположена на MainPageControl, содержит |

    | |(TTabSheet*) |на себе (FiguresListView) |

    |FiguresListView |Просмотр списков |Предназначен для отображения списка фигур |

    | |(TListView*) |используемых в проекте и расстановки им |

    | | |свойства разрешения использования при |

    | | |генерации |

    |FiguresImageList |список изображений |Содержит список изображений используемый |

    | |(TImageList*) |списком (FiguresListView) для отображения |

    | | |пиктограмм фигур |

    (* - помечены стандартные объекты Delphi)

    методы:

    |InitData |Помещает данные о разрешенных фигурах в список, |

    | |отображаемый на форме |

    |DoneData |Берет данные о разрешенных фигурах из списка, |

    | |отображаемого на форме |

    TFigureInfo - запись содержащая информацию о фигуре используемой при

    случайной генерации

    |Fig |TFigure |Тип одной из существующих фигур |

    |Enabled |Boolean |Определяет разрешено ли создание данной |

    | | |фигуры |

    |FigureHint |string |Наименование фигуры, для отображения в |

    | | |форме настроек. Если пусто фигура |

    | | |самостоятельно не отображется, а считается|

    | | |что она является близнецом для описанной |

    | | |выше |

    |Icon |integer |Индекс иконки в списке иконок для |

    | | |отображения в форме настроек |

    TFigureEnumManager - класс управляющий массивом записей типа TFigureInfo.

    Включает в себя следующие методы:

    |GetExistingFigure(Index:intege|Получение информации об определенной фигуре |

    |r) | |

    |LoadFiguresInfo(Reg:TRegistryD|Запись в реестр (registry) для сохранения настроек |

    |ef) |между сеансами работы |

    |SaveFiguresInfo(Reg:TRegistryD|Чтение из реестра |

    |ef) | |

    |GetIndexByName(const |Получение индекса фигуры в массиве по ее имени |

    |Name:ShortString) | |

    |GetAmount |Получение общего числа фигур в массиве |

    |CreateRandomFigure |Получение фигуры случайным образом |

    -----------------------

    [pic]

    Базовая точка

    Страницы: 1, 2


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.