![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2013
Сообщений: 24
|
Здраствуйте, имеется вопрос, вот допустим у меня в игре есть враги, которых можно убивать, я хочу чтобы при смерти они издавали разные вопли (разные звуки), так вот реализовываю так:
int_zvmol = random(1, 5); switch (int_zvmol) { case 1: zv_mol1s.play(); break; case 2: zv_mol2s.play(); break; case 3: zv_mol3s.play(); break; case 4: zv_mol4s.play(); break; } int_zvmol = random(1, 5); if (int_zvmol == 1) { zv_mol1s.play(); } if (int_zvmol == 2) { zv_mol2s.play(); } if (int_zvmol == 3) { zv_mol3s.play(); } if (int_zvmol == 4) { zv_mol4s.play(); } Спасибо. Последний раз редактировалось scorp2007; 21.02.2013 в 21:41. |
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
Как вариант, можно все звуки смертей врагов записать в массив:
А включать произвольный звук так: Разница в том, что вы не получаете некоторый индекс и потом сравниваете его, чтобы найти нужный звук, а сразу же выбираете один из доступных и включаете его. При этом вам не нужно заботиться о том, сколько звуков вообще есть (хоть 5, хоть 105), соответственно, не нужно писать кучу if`ов.
__________________
hauts.ru |
|
|||||
|
Регистрация: Feb 2013
Сообщений: 24
|
Цитата:
![]() |
|
|||||
|
Для 4-х вариантов switch будет работать не медленнее, чем получение одного значения массива через [].
Да и вообще - этот свитч вызывается только один раз в момент смерти, а сколько другого всякого разного при этом происходит, хорошо если switch занимает от этого всего 0.1%. И надо оно, здесь оптимизировать? Если бы свитч выдавал значения для какого-нибудь алгоритма, и вызывался раз 1000 за кадр - можно было бы подумать, посмотреть что быстрее работает. А так - руководствуйтесь соображениями удобства/расширяемости. С точки зрения типизации - не очень. Лучше так: Массив по природе - не типизированный, но хоть с написанием play не ошибётесь. Или так: |
|
|||||
|
Регистрация: Feb 2013
Сообщений: 24
|
Всем спасибо, не знал что будет столько вариантов, последний вообще супер
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:38. |
|
|
« Предыдущая тема | Следующая тема » |
|
|