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

Башня с пушкой:

Теперь сделаем башню с пушкой, которая будет крутиться за мышкой.

И так, что нам нужно? Нам нужно заставить крутиться пушку за мышкой, нарисуем башню с пушкой:

Конечно же, не забываем, куда и как двигаются градусы поворота:

Всегда к мышке картинка по стандарту будет повернута нулем, поэтому важно нарисовать башню с пушкой повернутой вправо.

Отцентрируйте Origin по центру башни, затем создайте объект и присвойте ему этот спрайт, добавьте этот объект в комнату. Создайте ему событие шага, и пишем:

image_angle = point_direction(x,y,mouse_x,mouse_y);

Всё, башня должна поворачиваться, теперь рассмотрим поближе:

Переменная «image_angle» отвечает за поворот картинки (Спрайт), функция «point_direction(x,y,x2,y2)» возвращает направление в градусах с точки «x,y» до точки «x2,y2».

Для того что бы наша пушка стреляла нужно сделать ещё один объект, а именно объект снаряда.

Сдублируйте спрайт башни, сотрите всё кроме кончика пушки, переделайте кончик пушки на снаряд.

Создайте объект и примените ему этот спрайт. Откройте объект снаряда и в событии создания сделаем так, что бы при создании объект сразу направился в сторону мыши, уже развернут в нужном направлении:

image_angle = point_direction(x,y,mouse_x,mouse_y);

move_towards_point(mouse_x,mouse_y,40);

Первая функция вам уже знакома, вторая функция «move_towards_point(x, y, speed);» объект двигается к точке «x,y» с заданной скоростью «speed».

Откроем объект башни и добавим Глобальную кнопку мыши, а именно на отпускание. Тут нам нужно просто создать объект снаряда:

instance_create(x,y,object1);

Всё, теперь башня стреляет, но есть некоторые недостатки, или появятся. Если вы ещё не забыли, есть «Глубина», на которой объект находится, и так как снаряд у нас создается всегда после создания башни, то он находится всегда на уровень выше (он над башней).

Во избежание этого, нам нужно изменить его глубину или глубину башни, но лучше глубину снаряда, так как он создается постоянно заново и получает новую глубину.

Откройте объект снаряда, в его свойствах вы найдете такое свойство «Глубина» (Depth), впишите туда: 10000

За счет этого, снаряд будет находиться за башней.

Сделаем ещё один шаг, и на этом тему закончим, добавьте событие из «Другие->Вне границ комнаты» на снаряд, запишем уничтожение объекта когда он выходит за границы комнаты. instance_destroy(); Тут всё.

Задачи:

Сделал этот раздел, и он поможет вам освоиться т.к. вы будете разбираться сами.

Всё что в задачах решается только кодом, и перечнем событий, все нужные функции ищите в справке!

Задача №1

Создайте объект, который двигается сверху в низ, с определенной скоростью.

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

Задача №2

Сделайте объект «Корзину», при перетаскивании объекта на корзину, после отпущенной кнопки мыши (Не важно, какая кнопка), перетаскиваемый объект должен удалиться.

Задача №3

Сделайте два объекта, один с управлением в 4 стороны, второй объект «Копейка», при столкновении с объектом «Копейка», объект (Копейка) должен уничтожаться, игроку должно насчитывать очки. Аналогично сбору копеек в игре «Марио».

Задача №4

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

Задача №5

Привяжите два объекта по бокам к третьему другому, сделайте управление на главный объект.

Задача №6

Сделайте сетку 4х4 из одного объекта со спрайтом клетки, с помощью цикла «for».

Задача №7

Сделайте сетку 4х4 из одного объекта со спрайтом клетки размером 32x32, с помощью цикла «for», при создании выдайте каждому объекту номер (Идентификатор), и выведете на экран его номер по центру объекта клетки.

Скажу вам один факт, функция instance_create(x,y,obj); возвращает номер объекта (Идентификатор), можно написать так:

obj_ID = instance_create(x,y,object0);

Тогда переменная «obj_ID» будет хранить в себе номер (Идентификатор) созданного объекта.

Подумайте в чем хранить номера объектов, если 4x4 = 16 объектов, то вам нужно где-то хранить номера.

Задача №8

Сделайте переход с одной комнаты в другую (функция перехода есть в справке), при столкновении объекта игрока с объектом двери.

Задача №9

Сделайте объект игрока с управлением в 4 стороны, сделайте второй объект «Ящик», при столкновении игрока с ящиком, ящик уничтожается и создается новый объект (бонус), при столкновении с которым игрок получает очки игрового счета.

Задача №10

Сделайте «Башню с пушкой» (стреляющую), падающие объекты (враги), при уничтожении которых игроку насчитываются игровые очки, когда игровой счет равен или больше чем 50, происходит перемещение в следующую комнату.

Бонус:

Работа с *.ini:

И так теперь я покажу, как создать *.ini файл и записать в него значение, так же, я объясню загрузку значения обратно из файла, и, структуру самого файла.

Что бы создать файл с расширением .ini, нам нужно его просто открыть, если файла не будет, то его создаст автоматически. Да, чуть не забыл, все команды связанные с работой над *.ini файлами, начинается с префикса ini_, ну что теперь посмотрим:

ini_open(“myFirst.ini”);

/*после этого, вы должны провести все нужные операции над файлом и закрыть его следующей функцией:*/

ini_close();

Но давайте сначала рассмотрим структуру самого файла:

  1. Секция, обычно заключается в квадратные скобки пример [Section].

  2. Ключ, ключ пишется перед знаком равно, то есть, перед значением.

  3. Значение, записывается после ключа и знака равно.

[Section]

Key1=value

Key2=value

Key3=value

Так же, секций может быть много:

[DataUser]

Name=Viktoriya

Age=23

[Settings]

Volume=100

HResolution=800

VResolution=600

Обращаемся к значению так:

Полученное_Значение = Секция -> Ключ -> Значение.

Давайте запишем что-то в *.ini файл, в событие создания:

ini_open(“iniFile.ini”);

ini_write_real(“Settings”,”Volume”,100);

ini_close();

Создайте запускаемый файл, запустите, затем завершите его работу, файл должен появиться возле него.

Посмотрите файл, он должен выглядеть так:

[Settings]

Volume=100

Теперь считаем это значение из файла:

ini_open(“iniFile.ini”);

result = ini_read_real(“Settings”,”Volume”,noone); // Объект «noone» ничего не значит.

ini_close();

show_message(“Volume is: ”+string(result));

Всё, тут всё должно работать.

Если вам необходимо записать или считать текст, то вы должны использовать функцию в соответствии:

ini_open(“iniFile.ini”);

ini_write_string(“Settings”,”Name”,”Victoriya”);

ini_close();

Записали, а теперь считаем информацию:

ini_open(“iniFile.ini”);

result = ini_read_string(“Settings”,”Name”,noone); // Объект «noone» ничего не значит.

ini_close();

show_message(“Volume is: ”+string(result));

Где результатом будет прошлое и последнее наше добавление:

[Settings]

Volume=100

Name=Victoriya

Задача:

«Запишите в *.ini файл массив, где Индекс массива равняется ключу в секции, а значение элемента массива заносится в значение ключа», выведете массив, загруженный из *.ini файла, на экран.

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

Ну а я начну скоро написание второй части. Всем спасибо за прочтение, я надеюсь, вам понравился этот учебник основ, и не только понравился, а ещё и принес пользу.

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