Очень часто в процессе выполнения программы возникают ситуации, имеющие несколько решений.
В таком случае программа должна выбрать одно из решений.
Вот тут на помощь к нам приходят операторы условия.
При выполнении определённого условия мы можем позволить программе выбрать одно из решений, указанных в теле оператора.
Например, вы хотите, чтобы сердце персонажа стало биться чаще, если показатель здоровья меньше 20 процентов.
В этом случае мы должны проверить, действительно ли здоровье игрока меньше 20 процентов, и при положительном результате ускорить сердцебиение.
if
Конструкция if является одной из ключевых во многих языках, в том числе и в BGT.
Она позволяет выполнять фрагменты кода при выполнении условия.
BGT предлагает структуру if, которая аналогична такой же структуре языка C, C++ и т.д.
Посмотрите на следующий пример.
if(health < 21)
Компилятор проверяет, действительно ли переменная health меньше 21, и если это так, то выполнится код между фигурными скобками.
{
// играть звук сердцебиения
}
В противном случае этот код будет проигнорирован.
Ещё один пример.
if(health < 21)
В данном случае условие имеет две ветви.
{
// играть звук сердцебиения
}
else
{
// делать что-нибудь, если здоровье не меньше 21
}
Если здоровье игрока меньше 21, то будет выполнен код между первой парой фигурных скобок, а блок, следующий за оператором else будет проигнорирован.
Если же здоровье игрока не меньше 21, то будет выполнен код между второй парой фигурных скобок, а код, находящийся перед оператором else будет проигнорирован.
И ещё несколько примеров.
// простое условие с использованием фигурных скобок
Важно помнить, что в составных условиях всегда используются фигурные скобки для отделения одной ветви от другой.
if(health<21)
{
// играть звук сердцебиения
}
// простое условие без использования фигурных скобок
if(health<21)
// играть звук сердцебиения
// составное условие с использованием фигурных скобок
if(health<21)
{
// играть звук сердцебиения
alert("Внимание!", "Критический показатель здоровья."); //показ сообщения
}
else
{
// делать что-нибудь
}
Рекомендуется использовать фигурные скобки во всех видах условий.
Ниже предлагается список операций сравнения:
- if(x == y) — true если x равно y. Для проверки используются переменные любого типа.
- if (x != y) — true если x неравно y. Для проверки используются переменные любого типа.
- if(x < y) — true если x меньше чем y. Для проверки используются переменные только числовых типов.
- if(x <= y) — true если x меньше или равно y. Для проверки используются переменные только числовых типов.
- if(x > y) — true если x больше чем y. Для проверки используются переменные только числового типа.
- if(x >= y) — true если x больше или равно y. Для проверки используются переменные только числового типа.
- if(!x) — true, если x false. Для проверки используются переменные типа bool.
Давайте рассмотрим следующий пример:
string my_name = "John Doe";
А теперь добавим проверку возраста.
int age = random(5, 50);
string message_string = "Меня зовут " + my_name + ", Мне " + age + " лет и не забудьте это!";
alert("Важная информация", message_string);
string my_name = "John Doe";
Вышеуказанный пример действительно простой, но мы разберём всё по частям.
int age = random(5, 50);
string message_string = "Меня зовут " + my_name + ", Мне " + age + " лет и не забудьте это!";
if(age<18)
{
message_string += "Мне меньше 18 лет!";
}
else
{
message_string += "я совершеннолетний!";
}
alert("Важная информация", message_string);
Сначала мы создаём строковые переменные my_name и message_string, а также целочисленную переменную age, в которую будет записываться случайное число от 5 до 50 с помощью функции random().
Далее мы проверяем age (возраст).
Если он меньше 18, тогда прибавляем к текстовому сообщению фразу «мне меньше 18 лет», а если возраст больше 18, тогда добавляем слова «я совершеннолетний».
Затем выводим сообщение на экран.
Конструкции if могут вкладываться друг в друга, главное, следить за правильностью вложений.
switch и case
switch и case являются заменой конструкции if и используются для составления более сложных условий.
Рассмотрим пример.
int health;
Ключевое слово switch объявляет оператор условие, а внутри круглых скобок размещается значение (метка), Которую программа будет искать внутри тела условия.
double energy;
switch(health)
{
case 100:
energy=100;
break;
case 90:
energy=89;
break;
case 80:
energy=78;
break;
case 70:
energy=67;
break;
case 60:
energy=56;
break;
...
}
Тело условия размещается внутри фигурных скобок.
Здесь может быть использовано множество операторов выбора case, так как это просто различные варианты условия, но работать будет тот, который равен определённому значению.
В паре с каждым оператором case используется оператор break для остановки проверки условия и выхода из него.
Если опустить этот оператор, то проверка условия будет продолжаться непрерывно, пока не достигнет конца тела условия.
Также в теле условия мы используем ключевое слово default, содержащее в себе значение, которое будет использовано, если никакое из предыдущих решений условия не подошло.
Давайте рассмотрим следующий пример:
switch(health)
Теперь, если здоровье игрока меньше 80 и продолжает уменьшаться, то энергия будет уменьшаться на 0.5.
{
case 100:
energy=100;
break;
case 90:
energy=89;
break;
case 80:
energy=78;
break;
default:
energy-=0.5;
}
Вы можете использовать оператор default в теле условия только один раз.
Конструкции case также могут вкладываться друг в друга.