Пятница, 29 Марта 2024, 14:41

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Оператор Switch
Оператор 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
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Оператор Switch
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг