Свернуть ↑
Цитата:
Сообщение от mego4el
Доброго вечера , небольшой вопрос по кейсам. (см код ниже).
Хочу сделать так, что бы rewardAmount установил значение в 50 после 20 кейса, и до определенного значения.
Что то вроде диапазона кейсов., где внутри нужно устанавливать тот же параметр
Т.е. примерно так
Код:
case 20: rewardAmount = 50; break;
case 21: rewardAmount = 50; break;
...
case 9999: rewardAmount = 50; break;
//а здесь будет тот самый предел, типа:
case 10000: rewardAmount = 0; break;
Как это реализовать? Внизу я пробовал делать вложенные кейсы, но по сути дела это наверное лишний код... Чегото я не понимаю, растолкуйте пожалуйсто.
Код:
switch(Player.mobkill)
{
case 1: rewardAmount = 3; break;
case 2: rewardAmount = 6; break;
case 3: rewardAmount = 12; break;
case 4: rewardAmount = 18; break;
case 5: rewardAmount = 24; break;
case 6: rewardAmount = 30; break;
case 7: rewardAmount = 33; break;
case 8: rewardAmount = 36; break;
case 9: rewardAmount = 39; break;
case 10: rewardAmount = 42; break;
case 11: rewardAmount = 44; break;
case 12: rewardAmount = 46; break;
case 13: rewardAmount = 48; break;
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20: rewardAmount = 50; break;
default: rewardAmount = 1;
}
|
Свернуть ↑Развернуть ↓
Оператор switch имеет довольно специфичную структуру на низком уровне и не предназначен для использования ренджей.
Также, Вы несколько неверно понимаете что такое case. Они не могут быть вложенными, но могут вести в один и тот же блок кода (что в Вашем случае как раз и происходит).
Если Вы точно знаете, что при mobKill равном 1 награда 10, при mobKill равном 2 награда 20, а во всех остальных случаях награда 500, то занесите ее в default.
Если нужно несколько таких ренджей, то спасет, наверное, только if. Switch не обладает гибкостью, однако, в целом, работает немного быстрее, чем if, но этого не будет в Вашем случае - Вы просто раздуете код.