Мобильная версия сайта | |||||||||
[Главная] | [Новости] | [Статьи] |
[Проекты] |
[Ссылки] |
[Автор] |
||||
[Архив новостей] | |||||||||
[Форум] | на форуме можно задать вопрос, посмотреть ответы на часто задаваемые вопросы | ||||||||
Здравствуйте! Вы попали на информационно-образовательный сайт посвященный информатике, информационным технологиям и компьютерным играм. Подробнее о целях и задачах сайта в разделе Главная. [English version of this page here...] | |||||||||
[Базовые уроки по DirectX] [Основы DirectMusic на Delphi] [Основы DirectInput8 на Delphi] [Основы DirectSound8 на Delphi] | |||||||||
[Разработка компьютерной игры] [Пример игры Donuts3D] [Delphi DirectX] | |||||||||
Эмулятор электронной игры Электроника ИМ-02 "Ну, Погоди!" | |||||||||
скачайте полную версию игры, зарегистрируйтесь и получите бесплатно полный исходный код игры для компиляции в delphi 7 или 2006 и уроки delphi directx 8.1 содержащие статьи по созданию собственной 2D/3D игры в среде delphi directx | |||||||||
Урок 2 Создаем и обрабатываем команды меню. | |||||||||
О том, что потребуется для данного урока читайте в основном разделе - уроки delphi directx 8.1 | |||||||||
Далее у читателя подразумевается наличие базовых знаний языка Delphi. | |||||||||
[назад] [страница 1] [далее] [к содержанию] | |||||||||
В качестве основы мы возьмем исходный код шаблона стартового приложения Delphi DirectX 8.1 (или сокращенной D3D-приложения), который мы создали в предыдущем уроке Но помните, что для его компиляции Вам нужна и сама библиотека Delphi DirectX 8.1 (папка с общим кодом) или исходный код игры "Ну, Погоди!" с включенной обновленной библиотекой Delphi DirectX 8.1 (поддержка русских букв, 2D анимация и некоторые другие возможности). |
|||||||||
Поскольку наша игра будет простой, работающей в оконном режиме, то для неё подойдет обычное типовое главное меню окна приложения, которое можно создать используя компонент TMainMenu из библиотеки VCL компонентов Delphi 7 или 2006. | |||||||||
Откройте проект шаблона стартового приложения, пересохраните его в другую папку и под другим именем (если хотите). Откройте модуль Main.pas, переключитесь на форму окна приложения - клавишей [F12] и добавьте на форму компонент TMainMenu - | |||||||||
Сразу же переименуйте MainMenu1 в нужное, например просто MainMenu | |||||||||
Теперь остается только сформировать главное меню и заняться реализацией работы его пунктов. Например игра Ну, Погоди! имеет следующее меню - (показано главное меню и все вложенные) |
|||||||||
Для простоты рассмотрим реализацию двух простейших пунктов меню - Игра > Перезапуск и ? > О игре | |||||||||
Для того, чтобы сформировать данные пункты меню дважды щелкните иконку компонента TMainMenu в форме окна приложения, которая появилась там, когда Вы добавляли данный компонент на форму. При этом откроется редактор меню, используя который можно создать меню. | |||||||||
Делается это следующим образом.
|
|||||||||
В инспекторе объектов находим свойство Name и называем пункт меню, например GameMenuItem | |||||||||
Свойство Name требуется для обращений к данному пункту меню из кода приложения. Само название пункта меню задается свойством Caption. Если Вы делаете англоязычную игру, то свойство Caption должно содержать английское наименование, например Game |
|||||||||
Для создаваемого пункта меню можно сразу же создать горячие клавиши. Например, если в поле Caption в качестве части имени задать символ & &Game то первая буква перед которой стоит данный символ становится клавиатурным сокращением [Alt] + [G] Можно также задать для пункта меню другую клавиатурную комбинацию через инспектор объектов. |
|||||||||
Аналогичным образом создаются все остальные необходимые пункты главного меню и пункты вложенных меню. Пункты главного меню, открывающие доступ к вложенным меню не требуют обработчиков. Вложенные меню должны содержать обработчики реализованные в коде, иначе такие пункты меню не будут выполнять никаких полезных действий! | |||||||||
Как создать обработчик для пункта вложенного меню? После того, как Вы создали нужный пункт вложенного меню (подменю или submenu) в инспекторе объектов на вкладке Events найдите для этого пункта меню свойство OnClick и дважды щелкните в пустом поле напротив этого пункта |
|||||||||
При этом в коде будет сгенерирован начальный шаблон обработчика события по выбору данного пункта меню мышью или нажатием одной из комбинаций горячих клавиш. | |||||||||
Далее останется лишь добавить в обработчик необходимый код. Так например, для реализации пункта меню Рестарт код может быть следующим - |
|||||||||
procedure
TMainForm.ReStartGameMenuItemClick(Sender: TObject); begin if g_d3dApp <> nil then begin g_d3dApp.GameMode := gmRestart; end; end; |
|||||||||
То есть всего навсего проверяется действительность наличия объекта d3d-приложения и если он есть, то устанавливается его свойство GameMode в режим gmRestart | |||||||||
Для создания обработчика пункта меню ? > О игре (или ? > About в англоязычной версии) нужно создать еще одну форму, добавить на неё необходимые компоненты и добавить код, необходимый для ее отображения. Сложного в этом ничего нет. Достаточно Вам будет взглянуть на исходный код реализации метода - procedure
TMainForm.AboutGameMenuClick(Sender: TObject); в модуле Main.pas с исходным кодом игры "Ну, Погоди!". В опциях проекта Project > Options в группе Forms данную форму (AboutForm) нужно перенести из группы авто-создаваемых (auto-create) в группу доступных (available) форм. |
|||||||||
Если Вы хотите использовать в подменю разделитель на подгруппы в виде полосы, как это сделано в пункте меню Опции - | |||||||||
то в качестве свойства Caption укажите "-" (знак минус) после нажатия Enter данный пункт меню превратится в разделитель. Остальные свойства для разделителя являются незначащими. |
|||||||||
Как реализовать остальные пункты меню? Ответ на этот вопрос ищите в исходном коде игры "Ну, Погоди!". Скажу лишь, что обработка нажатий на кнопки "игра А", "игра Б" и прочие, которые не являются пунктами меню VCL, а являются частью отображаемой в рабочей области окна D3D-приложения текстуры выполняется по-другому. О том как это сделано Вы узнаете из следующих уроков или опять же - обратившись к исходному коду игры. |
|||||||||
[назад] [страница 1] [далее] [к содержанию] | |||||||||
по всем вопросам пишите на megainformatic@mail.ru или оставьте сообщение на форуме | |||||||||
Обновления
и новости о развитии Delphi DirectX проекта http://www.megainformaticsite.pochta.ru http://www.megainformatic.boom.ru http://www.megainformatic.narod.ru
|
|||||||||
Cвои пожелания, вопросы или заметки отправляйте на: megainformatic@mail.ru или пишите на форуме |
|||||||||
Обмен ссылками | |||||||||
|
|||||||||
(с) МЕГА ИНФОРМАТИК 2006-2009 | |||||||||