
- •Содержание:
- •Переменные:
- •Логические Операторы и Операции:
- •Логическое && и.
- •Логическое || или
- •Оператор побитового Или |
- •Оператор побитового и &
- •Оператор Круглые Скобки ()
- •Стандартные События объекта.
- •Условные операторы и Конструкции.
- •Условный оператор if..Else:
- •Оператор switch (Переключатель)
- •Конструкция with:
- •Операторы Цикла.
- •Оператор цикла while:
- •Оператор цикла do:
- •Оператор цикла for:
- •Оператор повторения repeat:
- •Функции:
- •Операторы прерывания: «break, exit, continue»:
- •Краткая информация: dll (Dynamic Link Library) библиотеки расширения:
- •Структуры данных:
- •Частицы (Эффекты):
- •Многопользовательские игры (с использованием стандартных средств):
- •3D Графика (3d Режим):
- •Как найти быстро нужную функцию по справке и где её использовать (По логике):
- •Начало:
- •Давняя традиция «Hello World!» или «Привет Мир!»:
- •Работа с текстом:
- •Работа с Числами (Уровень игрока):
- •Создаем «Healthbar» (Индикатор уровня здоровья):
- •Движение в 4 стороны:
- •Drag&Drop или “Тяни и кидай”:
- •Башня с пушкой:
Оператор цикла do:
Давайте рассмотрим теперь оператор цикла do
do // Делать это
{
x = random(room_width);
y = random(room_height);
}
until(place_free(x,y)) // До тех пор пока не будет возвращена Ложь.
Оператор цикла for:
Далее у нас на сцене появляется оператор цикла for
На мой взгляд, то этот оператор широко применим, и довольно таки мощный.
Давайте рассмотрим его вблизи:
Ключевое слово for, затем открывается круглая скобка ( в круглых скобках, сначала, определяется стартовая позиция цикла, затем позиция, до которой требуется делать циклы, ну и последнее, это шаг перехода на следующий цикл, затем скобка закрывается ) и открываются плавающие скобки {}
Давайте я продемонстрирую:
for(n = 0; n <= 10; n += 1)
{
// Делаем что-то 11 циклов, как пример, мы можем увеличить переменную на 11
myAge += 1;
}
Так же, мы можем начать с другого значения и закончить другим, а так же сделать шаг больше.
for(n = 2; n < 30; n += 2)
{
myAge += 1; // Равно 14, при условии что переменная изначально равно нулю.
}
Поскольку, мы начинаем уже с 2, то цикл сократился на 2 шага, мы продолжаем цикл пока n меньше 30, и каждый шаг увеличиваем n на 2.
То значит: 30 шагов - 2 шага = 28 шагов в цикле, 28 / 2 наша степень роста шага = 14.
Теперь я покажу вам, что в цикле может быть ещё один цикл и двумерный массив, естественно вы можете комбинировать циклы с другими конструкторами и наоборот:
i = 0;
for(xx = 0; xx <= 5; xx += 1)
{
for(yy = 0; yy <= 5; yy += 1)
{
myArray[xx,yy] = i;
i = i+1;
}
}
Я объявил переменную «i = 0;», в цикле она увеличивается каждый раз на 1, но первое значение, которое применяется массиву в индекс [0,0] равное нулю, так как переменная «i» увеличивается в конце шага, это для последовательного заполнения массива цифрами от 0 до 25, поскольку шаги 5x5.
Теперь посмотрим, идет первый шаг в первом цикле, во втором цикле «for» проходит 6 шагов за это время.
Далее идет второй шаг в первом цикле «for», во втором цикле «for» снова проходит 6 шагов, от 0 до 5 нулевой шаг включительно.
Поэтому Массив получается, заполнен значениями в таком порядке:
myArray[0,0] = 0
myArray[0,1] = 1
myArray[0,2] = 2
myArray[0,3] = 3
myArray[0,4] = 4
myArray[0,5] = 5
myArray[1,0] = 6
myArray[1,1] = 7
myArray[1,2] = 8
myArray[1,3] = 9
myArray[1,4] = 10
myArray[1,5] = 11
Дальше думаю не нужно объяснять.
Оператор повторения repeat:
Давайте перейдем к оператору повтора repeat
Это тоже оператор цикла, но тут всё очень просто как два пальца обделать.
Мы можем просто записать:
repeat(50)
{
myAge += 1;
}
Если верить логике, а мы ей верим больше всего, то переменная myAge будет равна 50, при условии что она изначально равна нулю.
Функции:
И так, хочу теперь рассказать вам о функциях.
Функции слаживаются из таких компонентов как:
Возвращаемый тип значения функции.
Имя функции.
Аргументы функции.
Возьмем обычную функцию random, это выглядит так:
n = random(x);
Где random это имя функции, имя функции, так же как и переменная, должна учитывать правила написания имени, об этом мы уже говорили выше.
В круглых скобках (x) где «x» это Аргумент функции, Аргументов может быть много, это зависит от реализации функции и от того какие операции она выполняет над данными.
Аргументы перечисляются через запятые «,».
Давайте возьмем функцию, где есть более одного Аргумента.
move_towards_point(x,y,sp);
Где «x» «y» и «sp» являются аргументами функции.
Функция двигает объект к заданной точке x,y координат с заданной скоростью sp.
На деле это выглядит так:
move_towards_point(100,100,4);
Объект будет двигаться в позицию x.100 y.100 со скоростью 4.
В «Game Maker» есть так же Скрипты, в них мы можем сами сделать функцию, а потом по имени скрипта вызывать её и пользоваться ею, кстати, скрипты почти всегда используются при импорте Библиотечных функций.
Вы можете создать Скрипт двумя способами:
Меню Ресурсы -> Создать Скрипт.
Правый клик на папку Скрипты -> Создать скрипт.
Давайте я приведу пример функции с Аргументами с помощью скрипта, которая вычисляет разницу между человеческим возрастом:
if(argument0 == argument1)
{
return 0;
}
else if(argument0 > argument1)
{
show_message("Вы старше на: "+string(argument0 - argument1));
return true;
}
else
{
if(argument0 < argument1)
{
show_message("Вы меньше на: "+string(argument1 - argument0));
return true;
}
}
Допустим у нас скрипт с именем age, то вызов его происходит следующим образом:
if(age(10,10) == 0)
{
show_message("Нет разницы!");
}
Я сделал через условие if, поскольку, моя функция возвращает значение 0, в случае если разницы между годами нет, и возвращает 1, если разница есть.
Оператор return просто возвращает любое поставленное значение.
Заметьте, что я возвращаю в одном месте 0, а в других true, это просто для демонстрации, что можно возвращать любые значения и подстраиваться под них.
К тому же 0, если вы помните, может значить и false, а 1 может значить true.
Исходя из этого, можно сказать, что разницы то и нет, в том, что я передал 0 или false.