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

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

клеток fImage Изображение (TImage) Предназначено для хранения указателя на изображение основной формы fFieldMatrix Матрица (TFieldMatrix) Предназначена для хранения массива с данными типа TFieldCell о клетках. поля: fFieldSize Размер ячейки (integer) Хранит размер ячейки поля в пикселах свойства: FieldCountX Число ячеек по X (integer) Позволяет определить размер поля в количестве ячеек вдоль X FieldCountY Число ячеек по Y (integer) Позволяет определить размер поля

приспособленный для игры в количестве ячеек вдоль Y * FieldRealCountY Число ячеек по Y (integer) Позволяет определить фактический размер поля в количестве ячеек вдоль Y FieldVisibleCountY Число ячеек по Y (integer) Позволяет определить видимый размер поля в количестве ячеек вдоль Y * Фактически размерность массива по X совпадает с тем что отображается на экране, по Y ситуация другая. Фактически в памяти поле представлено по Y с большим размером (+ReservedLines).

Это вызвано необходимостью хранить данные о фигуре которая только начала падать и находится вне пределов видимости в верних строках и тем что именно по занятости хотя бы одной ячейки верхних ReservedLines строк определяется окончена игра или нет. Фактический размер определяется FieldRealCountY, допустимый для нахождения фигур FieldCountY. В то же время на экране может отображаться любое число строк от 1 до FieldRealCountY. Поэтому присутствует еще одно

свойство FieldVisibleCountY, которое как раз и определяет сколько строк видно пользователю. В частности этот момент использовался при отладке - когда на экране было все поле целиком, фигура начинала падать не с самого верха и игра заканчивалась когда фигура застревала на верхних ReservedLines строках, а не обязательно достигнув верхней границы. методы: ClearAll Очистка игрового поля, путем занесения 0 во все ячейки ClearCell (x,y:integer) Очистка ячейки (x,y)

путем занесения 0 в эту ячейку SetAtCell (x,y:integer;const Cell:TFieldCell) Установка в ячейку (x,y) значения Cell. Т.е. логическое получение занятой ячейки GetAtCell (x,y:integer) Получение значения из ячейки (x,y) ClearAt (x,y:integer;CurCell:PFieldCell=nil) Определяет свободна ли ячейка (x,y) логически и если указан CurCell то ячейка считается свободной даже когда там находится значения совпадающее с CurCell. DelFullLine Удаление одной из полностью занятых строк. IsOverflow Проверка на переполнение.

Переполненным полем считается поле для которого хотя бы одна ячейка верхних ReservedLines занята DeleteFigure(FigureNum:integer) Удаление с поля фигуры с номером FigureNum. Используется при падении Бомбы-2 DrawToImage Прорисовка текущего состояния поля Игра может находится в одном из логических состояний: gmNothing Игра не начата gmActive=1 Игра идет gmSuspend=2 Игра приостановлена gmEnded=3 Игра завершена gmAborted=4 Игра прервана пользователем gmGraphicError Игра завершена с ошибкой