7 и 1 вопрос по реализации меню на HGE (есть пример)
| |
OdIUm | Дата: Пятница, 15 Марта 2013, 13:49 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| День добрый. Подскажите пожалуйста, как можно реализовать что-то на подобии:
http://www.youtube.com/watch?feature=player_embedded&v=Hl7Zvij-VQ0
То есть меня интересует:
1) С точки зрения кода - лучше это делать в одном классе Menu и там прописывать все части? Или каждый элемент (фон, левое меню, правое меню) - это отдельный класс и прописывается отдельно, а потом все соединяется? Понятно что можно сделать по разному, но как удобнее, исходя из вашего опыта?
2) Анимированый фон. Это одна большая картинка, которая двигается медленно? Или это несколько разных спрайтов?
3) Кнопки слева - это уже готовые картинки с текстом в двух видах (обычный текст и подсвеченный) и при клике они меняются на мгновение? Или нарисована только кнопка, а текст выводится сверху через gui->AddCtrl? Или каким лучше способом это делать? Если заранее как картинка, то получается под каждое разрешение надо создавать свою кнопку? Или как?
4) Самый главный вопрос, выдвигающаяся часть меню. Как это сделать? То есть я близко не представляю...Если делать это как картинку, которая сначала двигается, а когда заканчивает - заменяется уже интерактивным меню - но мне кажется, это не правильно... А если двигать все эллементы (кнопки и проч), то это надо какой-то обработчик писать, который бы все расчитывал... в общем буду рад любым советом по реализации такого...
5) В кредитсах плывет текст, который идет снизу вверх и плавно появляется...Как такое реализовать?
6) В опциях есть слайдеры, которые меняют громкость музыки и звуков. Через что их делать в HGE? есть интсрумент?
7) При нажатии "Новая игра" появляется окошко для ввода имени...каким образом это реализовано?
Понимаю что вопросов много и может быть глупые, но буду рад за подсказки и советы... А если кто-то выложит исходники или примеры реализации подобных вещей - буду благодарен.
И еще вопрос не по теме:
Каким образом рассчитывать координаты расположения объектов на экране? Ну текста, кнопок и т.п.? Ну чтоб они располагались на нужных местах? Ну просто сейчас я пишу так: Код gui->AddCtrl(new cGUI(MS_PLAY, fntMenu, onsnd, pshsnd, hge->System_GetState(HGE_SCREENWIDTH)/2.0f - fntMenu->GetStringWidth("НОВАЯ ИГРА")/2.0f, hge->System_GetState(HGE_SCREENHEIGHT)/2.0f-60, "НОВАЯ ИГРА")); То есть по сути расположение надписи я вручную подбираю...смотря где распологается.. Может есть какой-то более удобный вариант, до которого я не дошел? Потому что этот вариант не очень удобен(
Буду благодарен за любые советы, примеры и подсказки)
Сообщение отредактировал OdIUm - Пятница, 15 Марта 2013, 13:49 |
|
| |
noname | Дата: Пятница, 15 Марта 2013, 15:12 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| Цитата (OdIUm) 1) С точки зрения кода - лучше это делать в одном классе Menu и там прописывать все части? Или каждый элемент (фон, левое меню, правое меню) - это отдельный класс и прописывается отдельно, а потом все соединяется? фон, левое меню и правое меню- отдельные элементы заставки, так же как и левая панелька и каждая кнопка слева- отдельные элементы левого меню и, в идеале, хорошо бы строить классы исходя из этого.
но, я бы предложил сделать проще: не создавать класс заставки, а создать просто функцию отрисовки заставки, которая отрисовывает все входящие в неё элементы. она вызывает метод отрисовки каждого элемента(или функцию отрисовки чего-то там). вначале отрисовывается фон и левая панелька, затем остальное- то, что перерисуется поверх этого.
Цитата (OdIUm) 2) Анимированый фон. Это одна большая картинка, которая двигается медленно? Или это несколько разных спрайтов? похоже, что это одна большая картинка, которая свёрнута в кольцо и наша область видимости медленно двигается по этому кольцу. чтобы такое нормально получилось, надо, чтобы края картинки нормально стыковались.
как это сделать: это одна большая картинка и каждый раз отображается какая-то часть этой картинки. или две части: уходящий конец картинки+ надвигающееся начало той же картинки. при отрисовке картинки засекай время и стадию отображения картинки. при следующей отрисовке смотри разницу во времени и делай вывод, насколько её прокрутить.
в этом нелёгком деле тебе поможет пример перемещения обычного квадрата в HGE. такой или похожий пример должен к нему прилагаться или спроси у кого-нить. после того как поймёшь как в HGE правильно двигать спрайт, можешь пробовать делать движение фона и остальные движения, про которые ты понаспрашивал.
Цитата (OdIUm) 3) Кнопки слева - это уже готовые картинки с текстом в двух видах (обычный текст и подсвеченный) и при клике они меняются на мгновение? проще всего сделать именно так. при клике они меняются на определённое время, которое нужно задать.
Цитата (OdIUm) 4) Самый главный вопрос, выдвигающаяся часть меню. Как это сделать? То есть я близко не представляю...Если делать это как картинку, которая сначала двигается, а когда заканчивает - заменяется уже интерактивным меню именно так. проще всего двигать просто картинку. и, поскольку при её движении нам не нужно реагировать на нажатия кнопок, то и не фик искать себе лишних сложностей.
при создании статической картинки используется фон + на него накладывается кнопка. когда картинка создана, отрисовывается её часть, всё б0льшая и б0льшая часть. когда картинка не дорисована- отрисовываем её дальше. и только когда картинка отрисована- мы готовы реагировать на кнопки.
про то, как правильно организовать движение, я сказал выше и больше возвращаться к этому не буду.
Цитата (OdIUm) 5) В кредитсах плывет текст, который идет снизу вверх и плавно появляется...Как такое реализовать? как сделать именно такую прозрачность как в примере? насколько я успел разглядеть, там низ и верх одной и тоже строки могут иметь разную прозрачность.. я бы предположил, что картинка выводится построчно, строками вышиной в 1 пиксель. и прозрачность зависит от координат строки по y.
Цитата (OdIUm) 6) В опциях есть слайдеры, которые меняют громкость музыки и звуков. Через что их делать в HGE? есть интсрумент? я мало работал с HGE, но думаю, что такого инструмента всё же нет. придётся всё делать самому.
Цитата (OdIUm) 7) При нажатии "Новая игра" появляется окошко для ввода имени...каким образом это реализовано? отслеживаем щелчок мышью, если его координаты попали на кнопку, вызываем соответствующую функцию. например, в этом случае, отрисовывается картинка окошка для ввода имени. как сделать ввод с клавиатуры- должно быть в примерах к HGE. там должно быть и про вывод и про ввод.
Цитата (OdIUm) Каким образом рассчитывать координаты расположения объектов на экране? Ну текста, кнопок и т.п.? Ну чтоб они располагались на нужных местах? никто, кроме тебя, не знает, как ты хочешь расположить свои кнопки. но, вообще.. если ты в цикле выводишь левые вертикальные кнопки, то ты вполне можешь вызывать функцию отрисовки кнопки номер N, которая из этого N будет вычислять её координаты по вертикали и номер картинки, откуда её взять.
Цитата (OdIUm) gui->AddCtrl нихрена себе! в HGE есть какие-то средства для вывода контролов? не знал.. интересно, что там ещё есть.
OdIUm, для решения твоей задачи надо уметь программировать И знать HGE.
чтобы научиться программировать можешь для начала ставить перед собой реально достижимые цели. например: крестики-нолики с нормальной хорошей менюшкой (выбор стороны, начать/завершить игру, выйти из программы) и ИИ, который выбирает равновероятно любой ход из возможных. когда сделаешь- придумай себе что-нить посложнее.
чтобы знать HGE, надо изучать документацию по HGE.
а там- сам решай, что тебе делать.
все правила форумной игры Дуэль Программистов
Сообщение отредактировал noname - Пятница, 15 Марта 2013, 15:17 |
|
| |
OdIUm | Дата: Пятница, 15 Марта 2013, 15:20 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| noname, спасибо за ответы. Я уже писал арканоид на HGE, так что опыт есть. Просто не сталкивался с такими эллементами. Так же есть опыт в разработке на С++) просто в принципе я представляю как это реализовать все, но боюсь что выйдет громоздко и не красиво...надеюсь благодаря советам сделать это элегантнее)
|
|
| |
|