Оператор Switch
|
|
GoldApple | Дата: Четверг, 05 Марта 2015, 07:46 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Всем привет, я столкнулся с проблемой, в этом коде: Left pressed: Код switch(speed) { case 0 and 14:obj_global.money+=10;break; case 15 and 19:obj_global.money+=25;break; case 20 and 29:obj_global.money+=50;break; case 30 and 39:obj_global.money+=100;break; case 40 and 49:obj_global.money+=150;break; case 50 and 64:obj_global.money+=250;break; case 65:obj_global.money+=10;break; }
Тут я пытался сделать так, чтобы в зависимости от скорости давалось больше денег. Но естественно он не работает и я не могу понять в чём тут проблема... Если можете помогите. Читал
Сообщение отредактировал GoldApple - Четверг, 05 Марта 2015, 07:48 |
|
| |
Sasha7b9 | Дата: Четверг, 05 Марта 2015, 09:03 | Сообщение # 2 |
был не раз
Сейчас нет на сайте
| Цитата GoldApple ( ) case 0 and 14 Какой язык программирования? Ладно, не буду умничать. В твоём случае нужно так:Код if(speed >=0 && speed <15)
Есть ещё изящный вариант с массивом указателей:
Код int money[65] = {10, 10, 10, ....}; obj_global.money += money[speed]; Дарю, студент.
Да, массив нужно сделать const, чтобы не случилось вдруг потери производительности.
Танкист МК
Сообщение отредактировал Sasha7b9 - Четверг, 05 Марта 2015, 09:09 |
|
| |
Fill_Freeman | Дата: Четверг, 05 Марта 2015, 11:10 | Сообщение # 3 |
почетный гость
Сейчас нет на сайте
| Цитата Sasha7b9 ( ) Есть ещё изящный вариант с массивом указателей:
Код int money[65] = {10, 10, 10, ....}; obj_global.money += money[speed]; Дарю, студент.
Да, массив нужно сделать const, чтобы не случилось вдруг потери производительности.
Не уверен, что такая штука прокатит в GML.
|
|
| |
Sasha7b9 | Дата: Четверг, 05 Марта 2015, 11:15 | Сообщение # 4 |
был не раз
Сейчас нет на сайте
| Цитата Fill_Freeman ( ) Не уверен, что такая штука прокатит в GML. Ну, я исходил из того, что мы имеем дело с обычным Си. Не знал, что в GM свой язык. Да и вообще с GM дела не имел. Прощу прощения, если что неправильно. Ждём, что скажут знающие.
Танкист МК
|
|
| |
LunarPixel | Дата: Четверг, 05 Марта 2015, 11:50 | Сообщение # 5 |
старожил
Сейчас нет на сайте
| Можно как-нибудь вот так:
Код switch(speed div 5) { case 0: case 1: case 2: show_message('0 - 14') break; case 3: show_message('15 - 19') break; case 4: case 5: show_message('20 - 29') break; case 6: case 7: show_message('30 - 39') break; case 8: case 9: show_message('40 - 49') break; case 10: case 11: case 12: show_message('50 - 64') break; case 13: show_message('65') break; }
|
|
| |
uberchel | Дата: Четверг, 05 Марта 2015, 21:26 | Сообщение # 6 |
частый гость
Сейчас нет на сайте
| Держи: Код switch(speed) { case 0: case 14:obj_global.money+=10;break; case 15: case 19:obj_global.money+=25;break; case 20: case 29:obj_global.money+=50;break; case 30: case 39:obj_global.money+=100;break; case 40: case 49:obj_global.money+=150;break; case 50: case 64:obj_global.money+=250;break; case 65:obj_global.money+=10;break; }
// скоро тут что нибудь появится )
|
|
| |
LunarPixel | Дата: Четверг, 05 Марта 2015, 22:03 | Сообщение # 7 |
старожил
Сейчас нет на сайте
| uberchel, ты эту конструкцию проверял? не будет ведь работать.
|
|
| |
uberchel | Дата: Пятница, 06 Марта 2015, 00:38 | Сообщение # 8 |
частый гость
Сейчас нет на сайте
| LunarPixel, В ГМ точно не уверен, если диапазон там не катит, то тогда только перебором: Код case 0: case 1: ... case 14:obj_global.money+=10;break;
Вообще switch довольно не плох, но для такого использования будет удобнее использовать if else темболее если важна производительность.
// скоро тут что нибудь появится )
Сообщение отредактировал uberchel - Пятница, 06 Марта 2015, 00:46 |
|
| |