Лицей № 000
Программа «Танчики»
Руководство программиста
Руководитель проекта –
Разработчик проекта – Кузьмин Максим
СПб
2008 год
Аннотация
В данном документе программист, являющийся пользователем программы «Танчики», сможет найти список процедур, из которых состоит программа, с кратким разъяснением принципа работы каждой из них и назначением. Также, здесь можно найти листинг программы и несколько скриншотов, подтверждающих работоспособность программы (тестовые примеры).
Содержание
Постановка задачи. 4
Формализация алгоритма. 5
Листинг программы. 7
Тестовые примеры.. 8
Описание размещения. 11
Требования к программным и аппаратным средствам.. 12
Постановка задачи
Изначально задача была такая – написать программу, в которой Вам надо будет, управляя своим танком, уничтожить все танки противника и не погибнуть при этом самим. Но в конечной версии программы есть только один танк противника, т. к. я не успел реализовать несколько танков. В остальном, проект написан так, как и задумывалось – генерация стен и ИИ противника реализованы. Ещё здесь надо отметить то, что написано всё это при помощи DelphiX – специальной надстройки над Delphi, которая упрощает работу с DirectX. Это очень важно, т. к. DirectX работает напрямую с «железом» компьютера, минуя ОС. Т. о. программы, написанные на DelphiX, имеют более высокую степень оптимизации, по сравнению с аналогичными программами, написанными при помощи стандартных средств разработки Delphi (без использования ассемблера в коде программы). Проще говоря, при движении танки и снаряды не мерцают и вообще не тормозят.
Формализация алгоритма
Откройте, пожалуйста, текст программы. Я буду перечислять процедуры так, как они идут по смыслу.
procedure TForm1.FormCreate(Sender: TObject) – создаёт главную форму, даёт значения переменным и запускает все перечисленные в ней. Create конструкторы, относящиеся к различным классам, перечисленным в тексте программы выше, после implementation и type. Выполняется процедура TForm1.FormCreate единожды – при запуске программы и никогда более.
constructor TWall.Create(AParent: TSprite) – генератор стен; запускается из TForm1.FormCreate и выполняется единожды (цикл есть, но он внутри самой процедуры); в нём рандомно задаётся кол-во стенок (кубиков), которое является максимальным. При строительстве он проверяет, не заезжает ли новая стенка за пределы экрана или на другую, ранее построенную стенку. Если нет, то строит. Если да, то он ничего не строит, рандомно выбирает новое место для строительства, проверяет его таким же образом, выбирает новое рандомное кол-во стенок и если место подходящее, то он рандомно выбирает направление, проверяет это направление и если оно свободно, то строит стенку. Но, всё это ограничивается одним главным for, стоящим вначале процедуры, и потолок этого for чётко задаётся в TForm1.FormCreate.
constructor TFire.Create(AParent: TSprite) – генератор снаряда танка игрока; запускается из TForm1.FormCreate и выполняется единожды. Отслеживает местоположение и угол поворота танка, и генерирует снаряд соответствующим образом (как бы в пушку).
constructor TEnFire. Create(AParent: TSprite) – то же, что и constructor TFire. Create, но для танка противника.
constructor TTank.Create(AParent: TSprite) – генератор танка игрока; запускается из TForm1.FormCreate и выполняется единожды. Ставит танк на заданное место.
constructor TEnemy.Create(AParent: TSprite) – то же, что и constructor Tank. Create, но для танка противника.
procedure TTank.DoMove(MoveCount: Integer) – меняет координаты и угол поворота Вашего танка, в соответствии с информацией с клавиатуры; проверяет столкновения со стенками. Выполняется регулярно, после выполнения других регулярных процедур, по очереди.
procedure TEnemy.DoMove(MoveCount: Integer) – меняет координаты и угол поворота танка противника, в соответствие с информацией об окружающей ситуации. Проще говоря, эта процедура содержит ИИ противника. Выполняется регулярно, после выполнения других регулярных процедур, по очереди.
procedure TFire.DoMove(MoveCount: Integer) – меняет координаты Вашего снаряда и проверяет столкновения. В случае столкновения разрешает Вам выстрелить новый снаряд. Выполняется регулярно, после выполнения других регулярных процедур, по очереди.
procedure TEnFire.DoMove(MoveCount: Integer) - то же, что и TFire. DoMove, но для снаряда противника. Так же проверяет столкновения. Выполняется регулярно, после выполнения других регулярных процедур, по очереди.
procedure TTank.DoDraw и procedure TEnemy.DoDraw – генерируют Ваш танк и танк противника, учитывая угол поворота (важно). Выполняется регулярно, после выполнения других регулярных процедур, по очереди.
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer) – через заданные в этом таймере промежутки времени перерисовывают изображение на экране, согласно информации с. DoCreate, .DoDraw и. DoMove процедур.
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState) – обработка события нажатия клавиши; соответствующим образом меняет значения определённых переменных.
procedure TForm1.Button1Click(Sender: TObject) – обработка события нажатия кнопки «Выход» на игровом окне. Просто выключает программу.
procedure TForm2.FormCreate(Sender: TObject) - создаёт второе окно и в соответствие с ситуацией, наполняет её содержимым – различными кнопками и Label ами.
procedure TForm2.Button1Click(Sender: TObject) – обработка события нажатия клавиши; закрывает программу.
procedure TForm2.Button3Click(Sender: TObject) – обработка события нажатия клавиши; запускает игру.
procedure TForm2.Button4Click(Sender: TObject) - обработка события нажатия клавиши; закрывает программу.
procedure TForm2.Button5Click(Sender: TObject) - обработка события нажатия клавиши; открывает раздел «Авторы».
procedure TForm2.Button6Click(Sender: TObject) - обработка события нажатия клавиши; возвращает Вас в главное меню.
Листинг программы.
В этой программе 1460 строк. И это только первая форма (окно). Я не решился приводить листинг программы, т. к. он займёт около 20 страниц A4.
Тестовые примеры
В этом разделе Вы увидите несколько скриншотов, которые подтверждают работоспособность программы.
Вот они:
Главное меню

Раздел «Авторы»

После нажатия кнопки «Игра»

После уничтожения танка противника:

После поражения

Описание размещения
Delphi Project, .exe файл и другие компоненты, созданные компилятором при написании программы, хранятся на флешке разработчика.
Требования к программным и аппаратным средствам.
Программа «Танчики» требует для корректной работы компьютер (PC) с установленной ОС Windows XP. Создавалась моя программа на компьютере такой конфигурации:
- Процессор с тактовой частотой 1,8 ГГц
- Видеокарта с 256 Мб памяти
- Объём RAM памяти – 1 Гб
Конкретные модели и производители железа не указаны намеренно, т. к. для программы подобного уровня это практически безразлично. Считать данную информацию аппаратным требованием не надо, т. к. тестировалась эта программа и на более слабой конфигурации. Тестирование прошло успешно.


