- •Содержание:
- •Переменные:
- •Логические Операторы и Операции:
- •Логическое && и.
- •Логическое || или
- •Оператор побитового Или |
- •Оператор побитового и &
- •Оператор Круглые Скобки ()
- •Стандартные События объекта.
- •Условные операторы и Конструкции.
- •Условный оператор if..Else:
- •Оператор switch (Переключатель)
- •Конструкция with:
- •Операторы Цикла.
- •Оператор цикла while:
- •Оператор цикла do:
- •Оператор цикла for:
- •Оператор повторения repeat:
- •Функции:
- •Операторы прерывания: «break, exit, continue»:
- •Краткая информация: dll (Dynamic Link Library) библиотеки расширения:
- •Структуры данных:
- •Частицы (Эффекты):
- •Многопользовательские игры (с использованием стандартных средств):
- •3D Графика (3d Режим):
- •Как найти быстро нужную функцию по справке и где её использовать (По логике):
- •Начало:
- •Давняя традиция «Hello World!» или «Привет Мир!»:
- •Работа с текстом:
- •Работа с Числами (Уровень игрока):
- •Создаем «Healthbar» (Индикатор уровня здоровья):
- •Движение в 4 стороны:
- •Drag&Drop или “Тяни и кидай”:
- •Башня с пушкой:
Создаем «Healthbar» (Индикатор уровня здоровья):
Давайте сделаем индикатор сначала стандартными средствами, а потом своими. Но для начала, я хочу объяснить одну вещь, дело в том, что стандартный «healthbar» показывает только 100% (100 hp), если у нас будет 200, то будет показано 100% и это правильно. Но есть одно но, если мы отнимем 100, то «healthbar» не двинется, а останется таким же, но как только будет меньше чем 100, то всё станет работать. Для этого есть решение, мы определим наше hp, закинем его во временную постоянную переменную и будем хранить в ней это значение как максимальное, пока максимальное значение не станет больше. Затем, мы должны наше реальное значение hp умножать на 100, затем полученный результат делить на максимальное количество, последний результат, мы будем использовать только для отображения. Вот математический пример: 200hp * 100% = 20000 20000 / 200max = 100% или 100hp * 100% = 10000 10000 / 200max = 50% Вот так вот. В создании: hp = 200; maxHP = hp; В событии рисования: var tmp, result; tmp = hp * 100; result = tmp / maxHP; draw_healthbar(x,y,x+50,y+5,result,c_black,c_red,c_green,0,1,1); В глобальное событие Мыши, на Левую кнопку пишем код: hp -= 10; На правую кнопку: hp += 10; Попробуйте. Конечно, нужно ограничить добавку hp нашей максимальной переменной maxHP. А на убавление, ограничить нулем, но при нуле обычно смерть, не так ли? Это я оставлю на вас. Теперь давайте сделаем это нестандартными средствами. Сделайте один Спрайт 16х16 закрасьте красным цветом (Цвет может быть любой), «Origin» посредине, назовите его «spr_fonHp». Сделайте второй Спрайт, 100 ширина, 16 высота, любой цвет, «Origin» оставляем как есть, назовите его «spr_Indicate». В событии рисования: draw_sprite_stretched(spr_fonHp, -1,x,y,result,16); draw_sprite(spr_Indicate,-1,x+result,y+8); Всё, должно работать.
Теперь объясню: draw_sprite_stretched(1, 2, 3, 4, 5, 6);
О данной функции вы можете и должны читать в справке, но на этот раз я объясню её аргументы. 1. Спрайт 2. Номер кадра 3 и 4. Координаты расположения 5. Ширина спрайта 6. Высота спрайта Мы используем нашу переменную «result» в качестве ширины от 0 до 100 точек. Хвала разработчикам, они сделали такую функцию, которая позволяет при расширении спрайта, одной стороне, оставаться на месте. Заметьте, что последний Аргумент у нас 16, это высота, 16 потому что мы сами указываем высоту. Минус в том, что при использовании этой функции, «Origin» не дает эффекта, поэтому мы в следующей функции к координате “y” прибавили 8, 16 / 2. draw_sprite(spr_Indicate,-1,x+result,y+8); Дабы сравнять их. Ещё одно стоит заметить, draw_sprite(spr_Indicate,-1,x+result,y+8); мы к координате “x” прибавляем переменную «result», это потому что, мы должны к текущей позиций добавлять «result». Если это изменить на такой вариант: draw_sprite(spr_Indicate,-1,result,8); То у нас этот спрайт будет рисоваться и привязываться не к позиции объекта, а к позиции игровой комнаты. Видите ли, у нас есть три вида координат, мировые (те, что в комнате), локальные координаты объекта, и координаты вида (Проекции), давайте ими займемся. Очень часто, бывают случаи, когда «healthbar» (Индикатор уровня здоровья), нужно привязать к проекции, аналогично привязке к локальным координатам объекта. Замените предыдущие две строчки на эти: draw_sprite_stretched(spr_fonHp, -1,view_xview[0],view_yview[0],result,16); draw_sprite(spr_Indicate,-1,view_xview[0]+result,view_yview[0]+8); В событие создания добавьте hspeed = 4; Теперь добавьте задний фон в комнату, увеличьте ширину комнаты примерно на 2000, включите вид в комнате, и прикрепите объект к виду (что бы Вид следил за объектом). Если вы не в курсе как это сделать я разобью по шагам: 1. Создайте Задний фон 2. Откройте комнату и перейдете на вкладку «Задние фоны». 3. Отметьте галочку «Видим при старте» и выберите фон. 4. Перейдите на вкладку «Виды» и отметьте галочки «Использовать Виды» и «Видим при старте», выберите объект из списка ниже. 5. Перейдите на вкладку «Настройки» и установите Ширину комнаты: 2000.
Запускаем, и ждем, пока задний фон не начнет двигаться влево. Если вы всё правильно сделали, и я в описании не допустил ошибку, то «healthbar» должен двигаться за Экраном. Тут пока что всё, двигаемся дальше.
