Разбираемся с переменными
В статье ACS. Первые шаги. Я вскользь, упомянул переменные, в этой же статье, мы подробно их разберем. Как я уже говорил. Переменные — это именованные контейнеры с данными, они имеют тип, название, и значение. Синтаксис представлен ниже.
тип название = значение;
Остановимся подробнее на типах.
- int — этот тип хранит либо целое число(например 5) либо дробное число(например 5.5). В других языках int может хранить только целые числа, но здесь не так, так что смиритесь.
- str — строковый тип(пример «Hello World»)
- bool — тип хранящий значение истина/ложь (true/false), переменные типа bool, используются в качестве переключателя для каких либо действий, включить гравитацию, отключить гравитацию и т.д.
Пример использования 3-х типов переменных:
int num1 = 31;
int num2 = 31.55;
str game_name = "Doom 2";
bool bossRage = TRUE;
bool imFalling = FALSE;
Присваивание
Символ «=« это оператор присваивания, а не приравнивания. Он присваивает правое значение, левой переменной
int левая_переменная = правое_значение;
Кардинальная разница между приравниванием и присваиванием заключается в том что данные правого_значения никак не могут изменится, изменяется только левая_переменная. Это имеет смысл, ведь в качестве правого_значения можно подставить переменную.
int num1 = 31;
int num2 = num1;
И тогда значение num1 будет 31, и значение num2 будет, тоже, 31.
Переменные могут и не иметь значения
int n1;
В таком случае, чтобы присвоить значение нужно сделать так.
n1 = 54;
int n1;
n1 = 54;
Также значения переменных можно изменять когда захочешь
int num1 = 31;
num1 = 55;
num1 = 84;
Математические операции
Переменные типа int можно складывать, вычитать, делить, умножать, а также оборачивать в скобки, правила такие же как в математике.
int num1 = 31;
int num2 = 5;
int num3 = num1 + num2;
int num4 = (num2 * num1)/num3;
int num5 = num4 - 50;
В ACS, также как и во многих других языках, есть упрощенное присваивание
Вот эта строка
int num1 = num1 + 5;
Ничем не отличается от этой
int num1 += 5;
В данном случае мы увеличили значение num1 на 5.
Помимо += есть также «-=» «*=» «/=«. Они функционируют почти так же как и +=.
В ACS есть так же операции декремента и инкремента . Названия замудрёные, но по сути они значат, операции +1 и -1. Обозначаются они так
num++
num--
num++ увеличивает значение на 1, num— уменьшает на 1
Ну вот и все что я хотел рассказать о переменных, давайте применим полученные знания на практике
Делаем счетчик(практика)
Создайте вот такой скрипт
#include "zcommon.acs"
int num1 = 0;
script 1 (void)
{
num1++;
print(i:num1);
}
Может вызвать вопрос, почему int num1 = 0; находится за пределами фигурных скобок {…}? Это потому, что num1 является глобальной переменной(для этой карты). А еще потому что это единственный способ сделать счетчик.
Глобальная переменная — это переменная доступ к которой может получить любой скрипт.
Ведь если мы сделаем так.
#include "zcommon.acs"
script 1 (void)
{
int num1 = 0;
num1++;
print(i:num1);
}
То это уже не будет иметь смысла, всякий раз когда мы вызываем первый скрипт, значение num1 сбрасывается до 0(int num1 = 0), и увеличивается на 1(num1++)
Скрипт готов осталось прицепить его на переключатель(switch)
Устанавливаем счетчик на карту
- Создаем переключатель
- И на lineDef переключателя вешаем скрипт.
- Готово, можете запустить.