ACS. Переменные

Разбираемся с переменными

В статье 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 переключателя вешаем скрипт.
  • Готово, можете запустить.

Итоговый результат

Пожалуйста отключи блокировщик рекламы, или внеси сайт в белый список!

Please disable your adblocker or whitelist this site!