Про змінних - тригери - картостроеніе - каталог статей - про warcraft 3

Що таке змінні?

Змінні - це області пам'яті, які можуть зберігати значення. Вони грають важливу роль в програмуванні, тому що дозволяють програмістам писати програми зручніше. В змінні можна зберігати майже будь-який вид даних. Вони дозволяють вам зберігати бойових одиниць, що виграє гравця, тип бойової одиниці або навіть текстові рядки. Збереження інформації в змінні дозволяє вам використовувати їх пізніше. Наприклад, ви хочете записати в змінну, скільки бойових одиниць вбив гравець. Тоді вам знадобиться змінна типу "целочисленная". Також можна записати гравця, який убив найбільша кількість бойових одиниць на протязі гри, використовуючи змінну типу "гравець".

  • Привласнюйте змінної ім'я, яке що-небудь означає. Назви з однієї літери виглядають дурнувато. Погодьтеся, назвати змінну "index" краще, ніж "i", назва "count" краще, ніж "c", а "name" краще, ніж "n".
  • Не починайте ім'я змінної з числа. Воно може містити числа, але першим символом повинна бути буква.
  • Можна використовувати в імені змінної нижнє підкреслювання, але ніяк не пробіл. Використання таких підкреслення є хорошим поділом слів, але краще не починати ім'я з такого підкреслення.
  • Не давайте імена, які дуже схожі на імена інших змінних.
  • Не давайте змінним імена, які схожі на ключові слова або функції. Наприклад, не називайте змінну типу "целочисленная" ім'ям "int" або змінну типу "рядок" ім'ям "string". Це може бути причиною деяких непорозумінь при створенні тригерів.

    Установка значень змінних.

    Значення змінної може бути встановлено в будь-який час гри. Ви можете задати значення важливих змінних на початку гри. Пізніше ви можете задавати інші змінні в міру потреби, наприклад коли відбувається будь-яка подія. Повторюся, значення змінної можна змінити завжди. Задати значення змінної можна тригерним дією "Set Variable".

    Змінні-масиви - це змінні, які можуть містити кілька значень. Будь-яка змінна, яку ви створюєте, може бути масивом. Для цього поставте галочку в поле "Масив". Кожне значення такої змінної має свій індекс, свій порядковий номер. Мінімальний індекс - 0. Індекс використовується для звернення до елементів масиву. Він дозволяє отримати доступ до будь-якого значення масиву. Наведу приклад - у мене є змінна-масив типу "рядок", яку я назвав "Fruits". У тригері ініціалізації карти я задам різні значення цього масиву, щоб пізніше їх використовувати.

    Пізніше, під час гри, якщо я захочу сказати гравцеві, щоб він збирав груші, я буду використовувати Fruits [] наступним чином:

    Також я можу циклом вивести назви всіх фруктів таким чином:

    Використання логічних змінних.

    Логічні змінні використовуються, щоб знайти відповідь на одне і більш твердження. Значення таких змінний може бути тільки одне з двох - "Так" або "Ні". Приклад затвердження - "Мій зріст - 10 футів або дерево впало". У свою чергу, твердження може бути істинним ( "Так") або хибним ( "Ні").

    Вище ми розглядали глобальні змінні. Локальні змінні мають відміну від них - вони можуть бути використані тільки в функції, в якій вони оголошені. Наприклад, вам потрібно тригер, який би запускався щоразу при вбивстві бойової одиниці. Якщо ви використовуєте стандартну глобальну змінну, то тригер, можливо, перезапише змінну з померлою бойовою одиницею, якщо він запуститься ще раз при смерті кого-небудь ще. Відповідно, правильно тригер вже не спрацює, тому що значення змінної було змінено.
    Або, припустимо, у вас є тригер, який воскрешає героїв, в якому вмираючий герой записується в глобальну змінну. Якщо при воскресінні одного героя загинув другий, то в глобальну змінну занесе цього героя, а герой, який був перед ним, буде втрачено.
    Щоб створити локальну змінну, вам знадобиться використовувати JASS. Додайте дію "custom script" в тригер і напишіть в ньому:

    Custom Script: local unit Revive_Hero

    Щоб задати значення цієї змінної, знову знадобиться Custom Script. Додайте в свій тригер ще одну дію "Custom script" і напишіть в ньому:

    Custom script: set Revive_Hero = GetTriggerUnit ()

    Потім знову знадобиться JASS, щоб воскресити героя. Напишемо ще один Custom Script:

    Custom script: call ReviveHeroLoc ([color = yellow] Revive_Hero. GetRectCenter (GetPlayableMapRect ()), true)

    Запам'ятайте - локальні змінні не показуються в стандартному інтерфейсі і саме тому слід використовувати JASS для управління цими змінними.

    Список типів змінних.

    Схожі статті