Помощь в обучении программированию (tetris)

Посмотреть архив целиком

Наше предложение для тех, кто хочет научиться программировать на Delphi, изучая исходники других программ!

Вы можете бесплатно скачать саму игру (ТЕТРИС), но обязаны заплатить 5 долларов за исходник программы. Вы получаете полный текст программы на Delphi и комментарии к ней! Всего за 5 долларов вы сможете изучить текст самой известной программы и понять, как создаются игры, такие как Tetris!

Мы дадим вам математический алгоритм программы! Теперь вы станете намного опытнее и сможете самостоятельно создавать программы и зарабатывать на этом деньги как в реальной жизни, так и в интернете!

Избегайте своих ошибок, мы научились правильно программировать и поможем
научить этому вас!

www.tetriswithsource.com

Описание модулей

TetrisP - Основной файл проекта

Tetris00 - Модуль содержит основную форму проекта (TMainForm). Производит связку между нажатиями горячих клавиш и кнопок панели управления с вызовом процедур обработки соответствующих событий находящихся в модуле Tetris02 и вызовам процедур прорисовки поля.

Tetris01 - Модуль содержит определение ячейки поля (TFieldCell), как записи о цвете и номере отображаемой в ячейке текстуры. А также реализацию игрового поля (класс TField) - позволяющего проводить отрисовку и простейшие операции над игровым полем.

Tetris02 - Модуль содержит реализацию алгоритма игры (класс TTetrisGame), обрабатывает события от таймера, ведет статистику (время игры, количество выпущенных фигур, удаленных линий). Создает фигуру случайным образом фигуру которая будет активной в течении следующего промежутка времени и производит с ней непосредственное взаимодействие. Отлавливает все логические ошибки происходящие во время игры и связанные например с попыткой запустить уже активную игру.

Tetris03 - Модуль содержит методы по работе со всеми фигурами используемыми в проекте и учитывает все их особенности реализации. (классы фигур TXXXXFigure).

Tetris04 - Модуль содержит определение констант используемых в программе и процедуру генерации цвета случайным образом с учетом того что цвет не должен будет сливаться с пустой ячейкой поля.

Tetris05 - Модуль содержит форму настроек (TOptionsForm) позволяющую отображать список существующих фигур читать и устанавливать их свойство Enabled.

Tetris06 - Модуль содержит определение структуры (TFigureInfo) для хранения необходимой информации о существующей фигуре, массив записей этого типа с описанием всех фигур проекта (для возможности отображения в форме настроек и выбора фигуры случайным образом), а также методы по доступу к этим данным

Tetris07 - Модуль обеспечивает многоязыковую поддержку. Он содержит в себе определение всех строковых констант используемых в сообщениях проекта и позволяет создавать исполнимый файл с сообщениями как на английском так и на русском языке.


Описание классов

TMainForm - класс основной формы проекта. Включает в себя такие объекты, как

MainToolBar

панель инструментов (TToolBar*)

Расположена на форме в правой части и содержит в себе набор кнопок (btnXXXX)

btnXXXX

кнопки (TButton*)

Расположены на панели инструментов и предназначены для удобного вызова заданных процедур

MainImageList

список изображений (TImageList*)

Содержит изображения иконок используемых кнопками (btnXXXX)

MainActionList

список действий (TActionList*)

Содержит перечень действий (actXXXX) используемый программой

actXXXX

действия (TAction*)

Предназначена связи кнопок (btnXXXX), горячих клавиш и вызова заданных процедур

MainPanel

панель (TPanel*)

Расположена в верхней части формы и предназначена для выводы статистической инфорамции (время, количество фигур, количество удаленных линий)в процессе игры

MainImage

изображение (TImage)*

Расположено в центральной части формы и предназначена для показа игрового поля на экране. (Но не его прорисовку!)

MainStatusBar

строка состояния (TStatusBar)*

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

fReg

реестр (TRegistryDef*)

Предназначена для работы с реестром - сохранением настроек программы между сеансами работы

fField

игровое поле (TField)

Реализует хранение логической информации о состоянии поля и его прорисовку т.е. вывод в изображение (TImage)

fOptionsForm

форма настроек (TOptionsForm)

Предназначена для возможности выбора фигур используемых в программе

fGame

игра (TTetrisGame)

Реализует алгоритм игры

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


TFieldCell - запись содержащая информацию об каждой ячейке игрового поля.

Color

longint

Цвет в ячейке если не используется текстура

FigureNum

integer

Номер фигуры которая попадает в данную ячейку. 0 - если фигуры нет

TextureNum

smallint

Номер текстуры в ячейке. Отрицательные числа соответствуют текстурам бомб


TField - класс игровое поле. Включает в себя такие объекты, как

fBomb

Список объектов (TObjectList)

Предназначен для хранения списка текстур бомб

fTexture

Список объектов (TObjectList)

Предназначен для хранения списка текстур непустых клеток

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

Игра завершена с ошибкой во время рисования

gmCreateFigureError

Игра завершена с ошибкой создания фигуры


Случайные файлы

Файл
49580.rtf
146975.rtf
25046.rtf
58798.rtf
73739.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.