![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Baltazar5000 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 6.12.2006 Репутация: нет Всего: нет |
Имеется такое распределение:
количество воинов / их очки / общая сумма очков например: Стрелки Ракетчики Итп 10/5/50 10/10/100 5/20/100 Общий урон составил 117 очков(2 очка в конце можно отбросить) Надо высчитать кто рандомным образом погиб. Т.е. в данном случае 5 Итп 3 Стрелка или 3 Итп 5 Ракетчиков 1 стрелок. Как реализовать данный алгоритм? Мучаюсь вторые сутки. Можно сделать примитивно без рандома. Заранее благадарю. |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
по-моему, данная задача не имеет практической плоскости применения. то есть алгоритм составлен задом наперёд.
должно вначале определяться у кого какой урон, а затем суммироваться общее количество очков урона |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
алгоритмическое предложение. я так понимаю, как раз с этим проблема, а не с арифметическими операциями "вычесть" и "разделить".
а у каждого типа нет своего показателя "защита"? тогда было бы не "рандомно погиб", а ущерб распространялся бы на группы войск обратнопропорционально мощности защиты. если же нет такого показателя, то следует определиться, какова конечная цель искомого алгоритма: минимальное количество погибших юнитов(сначала погибают самые живучие), "справедливость"(урон распределяется по всем группам пропорционально количеству юнитов), "полнота ущерба"(т.е. "израсходовать" все очки урона - так, чтоб минимизировать значение урона,"пропавшее впустую" - т.н. "задача о размене денег"), "сначала умирают самые слабые". короче, мне кажется, что вариантов рассчета множество. впрочем, в РПГ я практически не играю. Возможно, там имеется некий "стандарт" рассчета урона. |
|||
|
||||
Baltazar5000 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 6.12.2006 Репутация: нет Всего: нет |
skyboy, Ты говоришь правильные вещи =)) Но что-то я не могу сообразить чтоделать со всеми этими характеристиками (защита, атака, скорость и т.д.) можешь предложить конкретную формулу?
bars80080, Видно ты не совсем меня понял) Каждый юнит составляет нное количество очков. По куче юнитов нанесли определённый урон в очках. Нужно вычесть рандомом кто погиб. Вообще, на данной стадии развития проекта мне бы подощёл вариант "сначала погибают самые живучие" или наоборот. Конечно рандом интереснее. Кто может предложить решение данной задачи? |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
нет, тебе нужна не формула. формула - это для рассчета чего-то. а последовательность действий: выбрать, вычесть, уменьшить общее количество - это уже алгоритм. случайность будет бессмысленна, мне кажется. есть один танк и 10 лучников. урон таков, что танк не погибнет. разве это логично: бомбили клетку, выжили все лучники, только у танка здоровье немного уменьшилось? все же вариант с учетом "защиты" мне как-то логичнее кажется. а насчет "предложить": что тут предлагать? есть значение урона. есть набор элементов, разного здоровья и количества в каждой группе. выберем стратегию "первыми погибают самые живучие". 0. сортируем группы по значению здоровья одной единицы, чтоб проще было обрабатывать. 1. находим группу, с максимальным значением здоровья одной единицы, но так, чтоб это значение было меньше значения урона. 2. вычисляем количество "убитых" юнитов, уменьшаем значение урона и количество юнитов в соответствующей группе 3. если оставшееся значение урона меньше значения здоровья самой хилой единицы, прекращаем рассчет. если больше, повторяем с пункта 1. недостаток - часть урона будет "пропадать". чтоб компенсировать этот недостаток(который не в алгоритме: такое будет при любой стратегии рассчета, если значенеи урона будет меньше количества здоровья самой слабой единицы) есть вариант, который лично я наблюдал в "героях меча и магии": у каждой армии есть кроме параметра "живучесть одной единицы" ещё параметр "здоровье недобитой единицы". типа, 10 танков по 100 единиц здоровья, но у 11 единицы как будто здоровья только 5 единиц осталось. Малейший урон - и из 11 танков остается 10. в таком случае, урон не будет "пропадать впустую" |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |