![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#61 | |
Форумчанин
Регистрация: 04.08.2009
Сообщений: 684
|
![]()
1. Как я понимаю, появился запрет на постройку орудий, когда на поле есть хотя бы один враг. Это не дело ( Во всех играх типа Tower Defence строить можно в любое время, если у тебя есть деньги. Это сделано, чтобы пушка не стреляла по врагам, когда ее ещё и не поставили? ))) Лучше ввести какой-нибудь флаг у пушки типа unit_state = (usActive, usDeactivated).
2. После перемещения / Удаления орудия WorldState нужно скидывать в wsFree Цитата:
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой? Последний раз редактировалось Wicort; 06.07.2011 в 09:57. |
|
![]() |
![]() |
![]() |
#62 |
Участник клуба
Регистрация: 06.03.2009
Сообщений: 1,346
|
![]()
Теперь работает. На будующее лучше не использовать нестандартные разрешения. Список разрешений поддерживаемых монитором можно получить через zglPResolutionList.
|
![]() |
![]() |
![]() |
#63 | ||
Пользователь
Регистрация: 11.03.2007
Сообщений: 92
|
![]()
2Wicort:
Нет, запрет не из-за отсутствия врагов. Просто обычно, у тебя есть время между волнами, в течение которого ты можешь строится... Во время волны, обычно, только наблюдаешь. В принципе, если это убрать (флаг запрета), то будет даже проще. Цитата:
Если просто нажал на пушку, то выводится её состояние (возможность прокачки и т.п.). Если потащил её, то переместилась. По поводу возможности поворачивать: вообще нужно это? Если какая-либо пушка выделена, и нажали на кнопочку, например) "Del", то пушка удалилась. Ну а создание оставить как есть. Или, нажимаешь на кнопку нужного объекта (как у вас реализовано) и, с нажатой кнопкой, перетаскиваешь курсор куда нужно. При отпускании создастся объект в позиции. Далее можно заставить его поворачиваться за курсором, пока не будет сделан ещё один клик. Вот такой вариант ещё есть. Цитата:
2Вадим Буренков: О, спасибо. А то я бы в WinAPI полез. Буду ковырять и изучать. 2All: Подскажите, пожалуйста, на счёт радио кнопок (TRadioButton). Как их лучше реализовать. У меня пока такие мысли: Сделать у держателя (можно или реализовать в самой панели, или сделать модифицированную, как TRadioGroup) метод SetRadioGroupState(GroupIndex; Sender), где индекс будет указывать группу кнопок, к коротым нужно будет применить событие, а Sender нужен для того, чтобы его установить в True, а остальных в False. Как вам такая реализация? |
||
![]() |
![]() |
![]() |
#64 |
Форумчанин
Регистрация: 04.08.2009
Сообщений: 684
|
![]()
Во время волны обычно не просто наблюдаешь, но и оцениваешь, насколько далеко эта волна при таком раскладе сможет пройти. Если видишь, что не справляешься, достраиваешь нужные орудия. Здесь обычно ограничение по количеству пушек идет в наличии денег. Нет денег - нет пушек. Есть деньги - строишь когда хочешь.
В основном про wsFree я написал как раз из-за удаления пушки. Просто удалил одну пушку, потом решил переместить другую, а она удалилась. Реализация с выделением орудия - то, что нужно. Насчет поворотов - не знаю... не уверен. Возможно и не нужны. По радио-кнопкам. Я бы сделал так: создал класс TRadioGroup, внутри которого располагаются TRadioButton'ы. У TRadioGroup добавил бы свойства GroupIndex, ItemIndex. У TRadioButton - GroupIndex, Index. Всё, что находится внутри одной радио-группы - это одна группа, в которой может быть только один выбранный элемент. Т.е. у радиогруппы и у всех находящихся в ней кнопок одинаковый GroupIndex. В свойстве ItemIndex группы содержится Index выбранной кнопки. Соответственно, при клике по радио-кнопке определяем родителя по GroupIndex и проставляем ItemIndex. При отрисовке если TRadioButton.Index = TRadioGroup.ItemIndex, то опция выбрана, совершаем нужные действия.
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой? |
![]() |
![]() |
![]() |
#65 |
Пользователь
Регистрация: 11.03.2007
Сообщений: 92
|
![]()
Вот доработанный вариант.
Изменил способ создания/манипулирования объектов. Так же ввёл активность объектов, теперь при перемещении пушка деактивируется и не стреляет, впрочем, у ракетницы ракеты продолжают летать (если они успели вылететь). Так же хочу попросить совета: Есть мысли сделать несколько слоёв, для вывода графики. Объясню: Сейчас все объекты рисуют себя в порядке очереди и полностью, из-за чего бывает, что тень или радиус обстрела накладывается на другие объекты, хотя должен быть явно под ними. Хочу изменить метод рисования примерно таким образом: Procedure Draw(Layer: Byte); Где Layer - слой, который нужно нарисовать, а в самой процедуре поставить Case Layer Of ... А в контейнере (TWorld) добавить цикл ещё и по слоям: Код:
Плюс, можно сделать разделение слоёв, зависящее от типа объекта. То есть объекты (пушки, враги) всегда будут рисоватся в самом низу (первые), эффекты (взрывы, дым) в середине, а контролы последними (поверх всех). Да и ограничить число слоёв, для объектов и контролов пяти хватит, а для эффектов не вижу смысла, если их будет больше двух. В связи с этим, объявить константы: Код:
А в контейнере делать цикл по слоям для объектов, затем для эффектов и контролов. Как идея? Я, конечно, понимаю, что это не самый рациональный подход, но более ничего не придумалось. Теперь по поводу создания/перемещения. Для создания нужно нажать на кнопку нужного орудия и, не отпуская кнопки, перетащить его на нужное место. Для перемещения, так же нажать, переместить, отпустить. Для поворота тоже самое, только правой кнопкой. Для удаления перетащить объект на панель внизу. Удаление планировал сделать по другому, но столкнулся с тем, что если нажать на кнопку создания и отпустить, то объект останется под панелькой и с ним уже ничего не сделаешь, хоть он и останется полностью работоспособным. Поэтому воспользовался данным обстоятельством, чтоб их можно было удалять. Перемещение врагов рассматривайте как финт =) Позже исправлю. Да, вспомнил, что можно сделать рендер в текстуру. Хотел использовать это для фона. Один раз отрисовать вон, а потом выводить его как целостную текстуру. Имеет ли смысл это делать? Боюсь, что проблема возникнет, если размер экрана будет больше, чем размер спрайта, который поддерживает видеокарта. |
![]() |
![]() |
![]() |
#66 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
![]()
почему, если долбить мышкой по заголовку формы, дым от ракет прерывается? ))
а игруха классная + |
![]() |
![]() |
![]() |
#67 |
Форумчанин
Регистрация: 04.08.2009
Сообщений: 684
|
![]()
потому что в этот момент происходит кратковременное подвисание и не отрабатывает отрисовка. В результате, когда снова начинается прорисовывание, ракета уже в другом месте.
Вывод: не надо долбить мышкой по заголовку формы ))
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой? |
![]() |
![]() |
![]() |
#68 |
Пользователь
Регистрация: 11.03.2007
Сообщений: 92
|
![]()
2xrob:
Да и заголовка в скором времени не будет. 2All: В связи с этим вопрос: Как лучше сделать само изменение разрешения? Не установку режима (800х600, 1024х768), а пропорциональное изменение размеров, чтоб у тех, у кого разрешение больше не было преимуществ (в плане игровой динамики; то, что объектам будет больше пространства и т.п.). Пока есть мысли изменить канву так, чтобы она рассчитывала реальную позицию и размеры исходя их коэффициента пропорциональности (масштаба, проще говоря) или добавить новый, на который и возложить эти обязанности. Так же интересует, как лучше сделать главное меню, меню игры? |
![]() |
![]() |
![]() |
#69 |
Форумчанин Подтвердите свой е-майл
Регистрация: 31.03.2008
Сообщений: 179
|
![]()
Good, but simple example of the TD game here: http://ptdef.com/
|
![]() |
![]() |
![]() |
#70 |
Пользователь
Регистрация: 11.03.2007
Сообщений: 92
|
![]()
2akasex:
Thank you for example, I will think it later |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как "повесить " передачу данных из формы на событие нажатия кнопки типа "button" ? | vedro-compota | JavaScript, Ajax | 10 | 14.12.2010 21:05 |
Как обойти "преобразование типа из "string" в "float" невозможно" | lexluter1988 | Помощь студентам | 1 | 07.08.2010 12:23 |
разработка игры "Реверси". Имеется код этой игры на С++ | CD-RW | Помощь студентам | 0 | 28.03.2010 00:13 |
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" | aleksei78 | Microsoft Office Excel | 13 | 25.08.2009 12:04 |
На чем пишутся стратегии типа "Казаков" и "Эпохи империи" | Tayfun | Свободное общение | 3 | 26.06.2007 20:27 |