Массивы Delphi.
Каждый раз, когда нам приходится хранить большое количество однотипных данных мы вспоминаем о массивах. Возможен еще вариант с базами данных, но это уже совершенно другая история. Гораздо удобнее создать всего один массив нужного типа вместо целой кучи однотипных переменных и получать нужные данные просто указав номер элемента массива, который и содержит нужные данные.
Массивы делятся по типу и по размерности. Объявляются массивы в разделе var. Допустим, мы собираемся хранить в массиве целые числа. Таких чисел мы хотим хранить 10. Тогда объявляем наш массив таким образом:
Var
Mas:array[1..10] of integer;
Далее нам необходимо научиться заполнять числами наш массив. Существует два варианта заполнения массива. Первій вариант – ручной. Нам прийдется указывать номер каждого элемента массива и присваивать этому элементу нужное число:
Mas[1]:=12;
Mas[2]:=6;
Mas[3]:=4;
Mas[4]:=5;
Mas[5]:=3;
Mas[6]:=10;
Mas[7]:=9;
Mas[8]:=4;
Mas[9]:=5;
Mas[10]:=1;
Второй вариант это автоматическое заполнение массива случайными числами. Например случайные числа будут от нуля до девяти:
Randomize;
For i:=1 to 10 do
Mas[i]:=random(10);
Если числа должны быть с единицы то пишем так:
Mas[i]:=random(10)+1;
Если Вам необходимо хранить в массиве дробные числа, тогда нужно использовать тип массива real:
Var
Mas:array[1..10] of real;
Ручное заполнение будет віглядеть так:
Mas[1]:=1.13;
Автоматическое заполнение будет выглядеть немного сложнее, нежели у целых чисел:
For i:=1 to 10 do
Mas[i]:=random(100)*0.1;
Так же часто приходится в массиве хранить слова или предложения. Для этого используется тип массива string:
Var
Mas:array[1..10] of String;
Далее заполняем его вручную:
Mas[1]:=’skjdfhdkjghdfgjkdhgkjh’;
Автоматически заполнять такие массивы очень сложно, так как нужно создавать алгоритм, согласно которому будут записываться слова в массив.
Мы с Вами сказали, что массивы отличаются своей размерностью. Не только по длине массива (кол-ву элементов), но и мерности. До этого все наши массивы были одномерными. То есть хранили в себе лишь элементы, которые нумеровались одним числом. Быают случаи, когда необходимо использовать двумерные массивы. Например, при создании компьютерных игр, в виде двухмерного массива представляют игровую карту (в двухмерных играх):
Var
Map:array[0..15,0..15] of integer;
Мы создали двухмерный массив игровой карты размером 16х16. Причем нумеруем элементы с нуля. Каждый элемент – это отдельная клеточка (ячейка) на игровом поле. Нумеруются ячейки двумя цифрами. Первая цифра означает координату икс, вторая – игрек. Теперь мы каждой из клеток можем присовить число, которое будет означать картинку поверхности, которая будет хранится в данной клетке:
Map[0,0]:=1;
Автоматическое заполнение так же происходит по аналогии с заполнением обычного массива типа integer:
For i:=0 to 15 do
For j:=0 to 15 do
Map[I,j]:=random(5);
Также массиві могут и трехмерніми. Трехмерній массив содержит элементы, которые нумеруются тремя цифрами Map[I,j,n]. Такие массивы используются, например, при создании трехмерных игр. Да и вообще массив массив может быть сколько угодно мерным. Ограничений как таковых я не знаю.
Но до этого мы работали лишь с теми массивами, размер которых мы знали заранее и указывали его в разделе var. Бывают случаи когда размер массива на не известен. Допустим мы хотим создать игровую двухмерную карту, а ее размер при создании укажет пользователь. Тогда нам прийдется использовать процедуру setlength. Внутри этой процедуры мы указываем имя массива и его размеры. Таким образом среда Delphi создаст єтот массив и віделит под него необходимое количество памяти. Рассмотрим обьявление одномерного, двухмерного и трехмерного динамического (с неизвестным размером заранее) массивов:
Var
Mas:array of integer;
Mas2:array of array of integer;
Mas3:array of array of array of integer;
Выделяем память и создаем наши динамические массивы следующим образом:
Setlength(mas,5);
Setlength(mas2,6,7);
Setlength(mas3,10,10,5);
Ну вот, в принципе и все. Основніе особенности массивом я постарался обїяснить Вам в єтиой статье. Для создания компьютерніх игр єтих знаний вполне достаточно. И Вам они обязательно пригодятся. Желаю всем удачи в Ваших начинаниях по созданию игр! До встречи!
Автор: Соколов Виталий
Источник: delgame.at.ua
|