Это можно сделать на cJass с помощью define.
Но она будет парсирована в то, что написанно by Kartoha. Что-то вроде этого должно быть:
Code
define switch(num) = loacal integer sw = GetRandomInt(1, num)
define case(num) = {
if (num == 1 ) then
<ACTIONS>
else
//<EMPTY>
endif
}
Добавлено (16-01-2011, 02:02)
---------------------------------------------
Можно ещё более под Си (кто привык) модифицировать...
Code
define switch(num) = loacal integer sw = GetRandomInt(1, num)
define case(num) = {
if (num == 1 ) then
<ACTIONS>
}
define break = endif
Правда здесь break не то чтобы не нужен - его смысл теряется, но для сохранения привычек можно...
Добавлено (16-01-2011, 02:17)
---------------------------------------------
Тьфу...
Везде в строчке if(num == 1) then[/] надо изменить на [i]if(num== sw) then
А break всё же нужен... И даже смысл в принципе сохраняется :D
Юзается очень просто
Code
switch(3)
case(1)
<DO FIRST LIST ACTIONs>
break
case(2)
<DO SECOND LIST ACTIONs>
break
case(3)
<DO THIERD LIST ACTIONs>
break
Где 3 - в switch - количество веток, <DO ... LIST ACTIONs> - какие-то, абсолютно любые действия, а цифра в case - та ветка, которую нужно пройти... То есть пройти эту ветку, если выпало число num...
И... Это не тот switch, который есть в C/C++ и подобных, но очень на него похож, в принципе - можно сделать даже Си'шный переключатель, только строчку
Code
define switch(num) = loacal integer sw = GetRandomInt(1, num)
на эту
Code
define switch(num) = local integer sw = num
Ой... Опечаточка - loacal = local
Ну... Как-то так... Может работать и не будет, так как local'ные объявления должны находиться в начале функции... Ну... Есть ещё минус - не более одного использования на функцию... Иначе объявление будет конкурировать... Кто хочет - может доработать... Это так... С дуба рухнул и соорудил... Здесь ещё можно кое-чего доделать, например унифицировать, но... Это уже не в этом топике... Да и лень съедает...