Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Меню [Delphi, Windows]


Crazy_kill ©   (2003-09-11 01:31:00) 

Народ подкиньте мыслей как сделать меню для игры (Как главное меню в играх  Сохранить,  Загрузить, Настройки и т.д. и т.п). Заранее спасибо.


NailMan   (2003-09-29 10:43:00) [1]

Ну ка, а так:
http://nailman.narod.ru/Zakroma/UT_GUI_DEMO.exe


Andrey5   (2003-09-29 05:15:00) [2]

Ссылка не работает


Crazy_kill   (2003-09-15 00:31:00) [3]

Большое спасибо за советы!!!!!!!!!!


NailMan   (2003-09-11 14:46:00) [4]

Ну это от тебя зависит. Какую архитектуру GUI придумаешь делать, такую и сделалешь. Главное здесь удобство использования и желание повозиться. Если хочешь получить хорошее впечатление пользователей твоей игры, надо делать красивый и удобный интерфейс(я на этом собаку уже съел).

Сразу скажу можно юзать кем-то написанные элементы меню(про стандартные GDI-шные сразу забудь), но они могут быть не вполне гармонировать с архитектурой игры, поэтому предпочтительно(и сложнее ессно) написать свои элементы.

Я уже тут кидал ссылку на демку моего интерфейса, вот она:
http://nailman.narod.ru/Zakroma/UT_GUI_Demo.exe

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

Собсно я не далеко отошел от Дельфи - конфигурация меню расположена в обычном CFG файле, так что все очень просто.

Сам же алгоритм работы GUI довольно большой по содержанию(2 больших модуля), в котором жестко связаны все элементы меню в единую работу.

Каждое меню у меня выполнено отдельной процедурой, в которой по единому шаблону грузится нужная секция конфига, создаются в единых массивах элементы меню (label, button, checkbox, trackbar, panel, progressbar, listbox), а затем уже идет цикл меню, в котором рендерится само меню, опрашиваются устройства ввода и обрабатываются. На результат фенкции опроса/обработки быстрых событий(селектирование баттонов, строки листбокса, клик по баттону и д.р.) у меня выводится с некую переменную(с одновременным выводо всех стейтов меню) и далее я произвожу пост-обработку уже этих событий с case. Тут обрабатываются уже менюшные вещи(до этого обработка событий не конкретно меню, а класса GUI). Вобщем слегка запутанно на первый взгляд, но довольно четко в реализации.

Переход между менюхами я делаю через главный статус программы: присваиваю ему нужное значение и выхожу из менюхи, а далее в главном селекторе процессов запускается нужная процедура меню.


cyborg   (2003-09-11 08:23:00) [5]


Var
 CurrentMenu : Integer = 1;

...

 case НажатаяКлавиша of
   КлавишаВверх : if CurrentMenu>1 then Dec(CurentMenu);
   КлавишаВниз  : if CurrentMenu<MaxNumMenu then Inc(CurrentMenu);
 end;

...

Var
 i : Integer;
...
 for i:=1 to MaxNumMenu do if i=CurrentMenu then РисуемАктивныйПунктМеню else РисуемНеактивныйПунктМеню;


Наверх

Титульная страница Поиск, карта сайта Написать письмо