Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GM - Делюсь опытом (Часть первая).docx
Скачиваний:
0
Добавлен:
09.01.2020
Размер:
344.82 Кб
Скачать

Оператор Круглые Скобки ()

Имеют огромный смысл, и не только смысл, а ещё и Приоритет самый высокий.

Все мы, знаем ещё с Математики в школе, что, первым делом происходит Умножение, затем Сложение, иначе результат может быть неожидаемым. Я, честно говоря, не помнил этого, до сегодня. Мне даже стыдно =)

Но теперь я спросил одного моего сотрудника на работе, и теперь постараюсь этого не забыть.

И так, Круглые Скобки, если записать:

2 * 15 + 15 = 45; // И это неожидаемый результат для меня, я ожидал получить 60.

Но если записать так:

2 * (15 + 15)

То результат будет 60.

Почему так? Всё потому что всё, что в скобках имеет выше приоритет чем то, что без скобок.

Есть ещё вариант, и куча других вариантов, в зависимости от того, в какой последовательности нам нужно провести операции.

15 + 15 + 20 - 5 * 10 * 2 + 50 + 50 = 50; // Когда я ожидал 1000.

((15 + 15 + 20 – 5) * 10) * 2 + 50 + 50 = 1000;

Теперь всё нормально, и я спокоен. Давайте я помечу ту же конструкцию только раз-нумерую это по очереди выполнения: (( 1 ) 2 ) 3.

Теперь, давайте поговорим отдельно об Операторах присваивания.

= : Оператор Присваивания.

+= : Оператор Присваивания со Сложением.

-= : Оператор Присваивания с Вычитанием.

*= : Оператор Присваивания с Умножением.

/= : Оператор Присваивания с Делением.

Оператор Присваивания =

Этот оператор присваивает переменной новое значение, пример:

myAge = 0; // Объявление и инициализация нулем.

myAge = 10; // Присваиваем новое значение.

Оператор Присваивания со Сложением +=

Слаживает значение операнда слева с операндом справа, и присваивает значение операнду слева, пример:

myAge = 10;

myAge += 10;

Тогда myAge будет равна 20.

Оператор Присваивания с Вычитанием -=

Аналогично предыдущему, только, вычитывает значение правого операнда с левого.

myAge = 10;

myAge -= 10;

Тогда myAge будет равна 0.

Оператор Присваивания с Умножением *=

myAge = 10;

myAge *= 10;

Тогда myAge будет равна 100.

И оператор Присваивания с Делением /=

myAge = 10;

myAge /= 2;

Тогда myAge будет равна 5.

Не забываем о делении на ноль, это приведет к сообщению об ошибке.

Объекты и их Свойства:

В Game Maker, есть объекты, у которых есть встроенные свойства, такие как координаты X и Y.

Вы так же можете объявить какую то переменную в этом объекте, и если она локальна то, она будет видна только объекту, и она станет свойством этого объекта, в котором была объявлена. Глобальные переменные видны всем объектам. Но всё же, к локальным переменным есть способ обратиться с другого объекта, obj.number, и это не единый способ, обращение происходит через точку. Важно помнить! Что при таком обращении, объект и его локальная переменная, должны существовать в игре в момент обращения, иначе это приведет к ошибке. К глобальным переменным нет смысла обращаться через объект.

Теперь я хочу вам привести короткий список часто применимых стандартных свойств объекта:

x,y : «Локальные переменные» Координаты.

hspeed,vspeed : «Локальные переменные» Горизонтальная скорость и Вертикальная.

speed : «Локальная переменная» Скорость.

image_speed : «Локальная переменная» Скорость Анимации изображения.

image_index : «Локальная переменная» Отвечает за текущий кадр Анимации изображения.

image_angle : «Локальная переменная» Отвечает за поворот изображения в градусах 0-360.

sprite_index : «Локальная переменная» Отвечает за Спрайт (Sprite).

id : Это идентификатор объекта, по идентификатору можно тоже обратиться к объекту.

И много других, вы можете найти в стандартной справке.

Хочу вас познакомить со вторым способом обращения к объекту, да и не только, а ещё и изменить одно из его стандартных свойств.

Обращение происходит через Конструкцию with() (О конструкциях мы поговорим позже):

with(object)

{

hspeed = 2; // Помните что это?

}

Где в (…) круглых скобках, должно быть имя объекта, тогда всё, что в {…} плавающих скобках будет относиться только к нему.

Это равносильно, если бы вы написали, это прям в объекте, с которым происходит данное действие.

Но очень часто, когда есть несколько одинаковых объектов на одном уровне, это может вызвать неожидаемый результат.

Поскольку, имя объекта одно, то Конструкция with() будет принимать все экземпляры этого объекта (Ещё имя объекта можно называть «Индекс объекта»).

Так же, есть специальные объекты (all, self, other, noone):

all : Все объекты.

self : Этот объект, свой объект.

other : Другой объект (Причем, не известно какой, так сказать, какой-то).

noone : Нету, просто как ноль.

Например, можно уничтожить любой другой объект, который прикоснется к нашему объекту, если записать следующий код в событие «Столкновение»:

with(other)

{

instance_destroy();

}

Давайте перейдем в раздел «Стандартные События объекта».

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]