Модераторы: Rickert

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вычисление боевых единиц 
:(
    Опции темы
knut
Дата 28.10.2006, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



Доброго времени суток.
Пишу стартегию пока все просто есть 2 обекта танк и солдат.и метод в котором сражаются эти обекты.(метот в базовом классе)
В методе сраженя надо вычислить все свойство этиx обектов т.е мощность,скорость...... и т.д.
и возвротить резултат какой из обектов победил.
Вопрос.
По каим принцыпам делается это?
P.S в какой книге можно прочитать про это?



--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
DarlkElfTen
  Дата 28.10.2006, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 16.3.2006

Репутация: 1
Всего: 1



кхм..
итак мой совет..как самого закоренело седока в этой теме(и я кстати тиже потом нечто такое придумаю)

у нас есть два объекта со сходными характеристиками и своствами
напрмер атака броня и жизни
как вариант можно придумать формулу вычиляющую мощность(условно) объекта - "M"
тогда изходя из этих трех параметров наша переменная будет равна
M=Unit.Atack +Unit.Health*k1+(Unit.Armor-Unit.Attack*k1)*k3
ult kn -коеффицент умножения

естесно это далеко не единственный способ..можно высчитывать опр. показтели урона и наносить его жизням..высчитать у кого жизни закончаться первыми и тот проиграл..
еще написать?

Это сообщение отредактировал(а) DarlkElfTen - 28.10.2006, 17:29
--------------------
"Две башни"
PM MAIL ICQ   Вверх
knut
Дата 28.10.2006, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



DarlkElfTen, 
скин если не трундно доки по темеsmile

Добавлено @ 20:56 
DarlkElfTen, 
Цитата

еще написать?

напиши если врея есть будет интересно


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
DarlkElfTen
Дата 28.10.2006, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 16.3.2006

Репутация: 1
Всего: 1



дык тут же вся идея...
доков у меня нет..мой моск-моя прелесть..а алгоритм примерный расписал..тот что я тее написал подробно не очень(но ты сам просил его описать)))
а вот со вторым про урон - сам ниасилишь??
если нет, то тоггда могу завтра подумать, сеня-уже спать...) smile 
--------------------
"Две башни"
PM MAIL ICQ   Вверх
knut
Дата 28.10.2006, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



DarlkElfTen, 
буду рад новым идеям smile 


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
DarlkElfTen
Дата 28.10.2006, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 16.3.2006

Репутация: 1
Всего: 1



*скромнеько*репу бы дал smile 

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

там простая формула...далее мы вычитаем процент брони с умножением на коеффициент K
где K=
100%:тип брони относительно такого то равен <1>
...
итд

понимаешь примрено мои сумбурные речи?)
--------------------
"Две башни"
PM MAIL ICQ   Вверх
dereyly
Дата 29.10.2006, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 16.6.2006

Репутация: 2
Всего: 4



-Чем отличается бездарность от гения
-Бездарность копируют чужие идеи, а гений ворует (с) 
smile
к примеру.... 
http://www.dota.org.ua/articles/dota_mathematics.html
PM MAIL   Вверх
dereyly
Дата 29.10.2006, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 16.6.2006

Репутация: 2
Всего: 4



Или вы хотели что то такое невнятное увидеть

RedUnit[1].type=tank;
BlueUnit[1].type=camikadze;

%цикл скорее всего от времени
BlueUnit[1].hp=BlueUnit[1].hp - RedUnit[1].atack/(BlueUnit[1].ArmorReiting-ReUnit[1].ArmorPierсing(BlueUnit[1].type) )

RedUnit[1].hp=//тоже самое

if (BlueUnit[1].hp<=0)
BlueUnit[1].destroy;

if (RedUnit[1].hp<=0)
RedUnit[1].destroy;

Это сообщение отредактировал(а) dereyly - 29.10.2006, 01:39
PM MAIL   Вверх
DarlkElfTen
Дата 29.10.2006, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 16.3.2006

Репутация: 1
Всего: 1



Не понял фразы)))
зы: такие вещи не ворются а перепридумываются.. и нафига нам гайды по доте..кстати, не знал, что ты играешь в вариег..даже не  предпологал)))


Цитата

BlueUnit[1].hp=BlueUnit[1].hp - RedUnit[1].atack/(BlueUnit[1].ArmorReiting-ReUnit[1].ArmorPierсing(BlueUnit[1].type) )

типично...и не очень грамотно т.к. так придется писать ля аждого объекта..кароче более гибкая формула подошло бы))

зы: в варе хорошая система урона там и спеллыы и простая защита и защита от заклинаний)) smile 
--------------------
"Две башни"
PM MAIL ICQ   Вверх
dereyly
Дата 29.10.2006, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 16.6.2006

Репутация: 2
Всего: 4



Цитата(DarlkElfTen @ 29.10.2006,  12:23)
типично...и не очень грамотно т.к. так придется писать ля аждого объекта..кароче более гибкая формула подошло бы))

да вообще я не претендовал на хорошее качество, влом думать вообщем было, но подумал может для примера стоит написать что нибудь латинецей smile

Код

BlueUnit[1].hp=BlueUnit[1].hp - RedUnit[1].atack/(BlueUnit[1].ArmorReiting-ReUnit[1].ArmorPierсing(BlueUnit[1].type) )


Из жизней танка вычитаются повреждения которые наносятся за один такт допучстим юнит атакует раз в секунду...
эффективные повреждения: повреждения наносимые пехотой делятся(домножаются) на некий коэффициент эффективной брони
коэффициент эффективной брони (BlueUnit[1].ArmorReiting-ReUnit[1].ArmorPierсing(BlueUnit[1].type) ) -- это броня минус функция зависящая от типа брони... т.е если у танка броня 10 а коэффициент пробивания брони у автоматов 0, у гранат допустим 7 (можно в процентах 70% или комбинировано  4 и 50% -- (10-4)*0.5)....
 ну всё это грубо как было замечено

я про то что есть два подхода 
1) делать громоздкие форомулы по расчету повреждения в зависимости от брони и оружий которые пробивают эту броню
2) или нормализовать (как в приведенной ссылке) эфф_жизни=жизни*(1+0.06*броня)


Это сообщение отредактировал(а) dereyly - 29.10.2006, 14:35
PM MAIL   Вверх
DarlkElfTen
Дата 29.10.2006, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 16.3.2006

Репутация: 1
Всего: 1



ну в псчем там тоже неплохо)))
хотя я бы выбрал первый вариант..кстати
там не так уж и громздко..
если мы когданиьт игру доделаем,то там вы увидите..урон зависит от брони участа попадания(если на нем нету брони))))
 smile руки вфферх
--------------------
"Две башни"
PM MAIL ICQ   Вверх
knut
Дата 30.10.2006, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



Есть 2 юнита танк и армия.Вычисление боевых единиц я зделал так.
Изначально get методами получаем начальные значения боевых единиц .

Просьба дать оценку или можно даже поправки  внести smile 
            
Код

                     //метот в котором сражаются два юнита . е и возврошает победиталя.
                   ///Calculate Accoursy 
       m_Distance = ptT->GetDistance();
       if((m_Distance < 100) && (m_Distance > 0))
           return ptT->GetAccuracy();
           else
        m_accoursy = ptT->GetAccuracy();
        return m_accoursy / m_Distance;
    --------------------------------------------------------------------------      
                            /// Calculate FireRate
                             if((m_Distance < 100) && (m_Distance > 0))
                return ptT->GetFireRate();
           else
           m_FireRate = ptT->GetFireRate();
         return m_FireRate/m_Distance;
            
      --------------------------------------------------------------------------    
                                   ///Calculate Armor 
            m_Armor = ptT->GetArmor();
            m_Powre = ptA->GetPowre();

       if((m_Distance < 100)&& (m_Distance > 0))
        return m_Power - (m_Power * m_Armor);
       else
           return (m_Power/m_Distance) - (m_Power * m_Armor);

               --------------------------------------------------------------------------    
       /// Calculate Life and retuen Result
        if(m_Armor < 0)
            b_Life = false;
            return b_Life;
        else
            b_Life = true
            return m_Life;

       return b_Life;    
    


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
dereyly
Дата 30.10.2006, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 16.6.2006

Репутация: 2
Всего: 4



Несовсем понятны некоторые вещи
1) Если мы вычисляем Accuracy,  то неплохобы разыграть попал или не попал при выстреле... 
2) m_Armor одновременно и защита в процентах снимающаю повреждения   return m_Power - (m_Power * m_Armor);
и жизни  if(m_Armor < 0)... если броня пробита то это незначит что танк взорван... тогда лучше как в Орионе ввести понятие Structure 
PM MAIL   Вверх
DarlkElfTen
Дата 30.10.2006, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 16.3.2006

Репутация: 1
Всего: 1



а про стракчюр подробнее плиз)
я в орион не играл)

Добавлено @ 15:09 
Цитата

 return m_Power - (m_Power * m_Armor);

не понял что это дает...
мы возратим ноль если M_Armor в процентах = 100
а смысл?

судя по тому , что я понял m_Power - жизни
а m_Armor  -процент брони??

в обчсем я что-то не допер..можешь разъясниить значения всех этих параметров..мой маленький мохг долго  доходит
--------------------
"Две башни"
PM MAIL ICQ   Вверх
knut
Дата 30.10.2006, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



dereyly,
 
Цитата

 если броня пробита то это незначит что танк взорван

если броня пробиата то она 0 а если менше 0  а то юнит гроxнут.не так?


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0535 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.