Блог ☯

06.04.2017

Что такое одномерные массивы (Arrays) в Game Maker Studio?

На примере языка программирования Game Maker Studio Language давайте посмотрим что такое одномерные массивы (Arrays) и как с ними работать.

По сути дела массив данных - это таблица, ряд или матрица данных. Если вы только осваивайте программирование, то понять эту штуку вам поможет математика.

Просто представьте себе список, простой список или таблицу в excel, например вот такую:


Что такое одномерные массивы (Arrays) в Game Maker Studio

Таблица характеристик оружия из дизайн документа для игры


Так-как в этой статье я рассказываю только про одномерные массивы (Arrays), то нам достаточно названия оружия и урона.

Допустим, мы хотим записать в игре что у пистолета урон = 1. Как это сделать?

Можно создать переменную

  • pistol_damage = 1

Ну ок. А если у вас 10 видов оружия? А если 100500?

Так и будем писать: mp5_damage, ak_damage...

Как записать всё это проще?

Можно взять и просто создать одну переменную - weapons_damage (урон оружия) и записать в неё все параметры урона у всех оружий.

  • weapons_damage[0] = 1 // Урон у оружия номер (id) 0 равен 1 
  • weapons_damage[1] = 3 // Урон у оружия номер (id) 1 равен 3 
  • weapons_damage[2] = 5 // Урон у оружия номер (id) 2 равен 5

Далее, если нам надо например использовать переменную - урон оружия id 1 (Пускай - винтовка), параметр урона у которой мы записали как 3, то мы просто пишем:

damage = weapons_damage[1]

С помощью массива данных мы собрали в кучу все параметры урона для всех видов оружия, а не делали отдельные параметры урона и отдельные переменные под каждое оружие.

Массивы вам очень сильно помогут в работе со всякими списками, большими объемами данных, инвентарём в RPG и т.д. Без них код может быть Китайским (куча повторений).

Я записал видео где объясняю одномерные массивы на другом примере, вот код от туда:

if open=0{ 
    effect_create_above(ef_ring,x,y,1,c_red);
 
    item[0] = o_gold;
    item[1] = o_grenade;
    item[2] = o_shotgun;
    item[3] = o_ammo_4_1;
    item[4] = o_hp_1;

 
    n = array_length_1d(item) -1 
    instance_create(x,y,item[irandom(n)]); 
    instance_destroy();
 
}

Старый код (и как сделать это не через массивы, а "Китайским кодом") вы можете найти в статье про рандомный лут:


Вот смотрите, тут у нас рандомный предмет (1 из 5). Может быть золото, граната, дробовик и т.д. Каждому объекту мы присвоили одну переменную - item, но разные значения!

Далее мы считаем n - количество данных в массиве (код для гейм мейкер студио).

Ну и создаёт случайный объект. Если мы добавим новый предмет в игру (или в список), то нам нужно его вставить только в одно место и всё.

item[5] = o_hp_2;

Добавили пятый предмет - улучшенную аптечку. Просто за первой аптечкой вставили эту строчку и всё, дальше всё уже будет считаться само.

Дополнительно вы можете посмотреть моё видео про массивы (8 минут):