Как сделать твердую стену в game maker

Обновлено: 06.07.2024

Он не ограничивает вас конкретным жанром игры. Чем это плохо? Почти всю игровую механику вам придётся вписывать самостоятельно. Зато написать на фоне всей этой дребедени что-то своё, чего никто раньше не делал, вы сможете без труда. Особенно это занятие облегчает наличие встроенного скриптового языка. На самом деле, без этого языка многое сделать либо просто нереально, либо слишком долго.

Перед тем, как мы начнём… Если вы хотите научиться пользоваться GameMaker с нуля - вы попали не по адресу. Учить GML имеет смысл только после освоения всего интерфейса, и хотя бы прочтения справки по действиям. Написать несколько игр (не серьёзных, разминочных) на нём тоже желательно, просто чтобы свыкнуться с основными принципами. В общем, в рамках этого цикла я буду считать, что вы знаете о каждом виде ресурсов в GameMaker (а именно спрайтах, комнатах и объектах - остальное можно разобрать и далее), а также умеете писать несложные действия с событиями. То есть, по сути, знаете всё, кроме языка. Или представляете, как это работает.

Всё ещё с нами? Хорошо, поехали!

Переменные

А, и вот ещё. GML нещадно карает за любые опечатки. Пишите внимательно.

В GML значения у переменных могут быть всего двух типов (иначе говоря, в GML два типа данных). Это числа и текст. Если вы используете переменную, у которой значения ещё нет, а потому и тип её значения неизвестен - высветится ошибка. Это примерно как диалог:

— Дай мне авокадо!

— А что такое авокадо?

PS: да, наверное, меня можно назвать гурманом.

Также есть три типа видимости переменных: локальные, поля и глобальные. О том, как их создавать - позже, сейчас лишь различия:

Локальные исчезают сразу после того, как закончился кусок кода с их участием. Нужно специально указать в начале участка кода, что переменная локальна. Они нужны лишь тогда, когда хранение числа нужно лишь в данном участке.

Поля принадлежат объектам, и в каждом объекте свой экземпляр поля, со своим значением. Можете хранить в объектах что угодно при помощи полей. Этот тип видимости используется всегда, если не указано иное, также есть целый ряд подобных переменных в самом GM, в каждом объекте. Вполне очевидно, что каждый объект знает, где он находится, куда движется и с какой скоростью. А знания эти находятся в этих переменных: x y speed direction . На самом деле, таких переменных гораздо больше, но сейчас нам это не понадобится. Если вы забыли какое-то название - подсмотрите в справке, потому что их такое огромное количество, что их бесполезно учить наизусть. Кое-что вы запомните сами в процессе работы, и этого вам, скорее всего, будет хватать.

Глобальные доступны абсолютно всем абсолютно отовсюду. Из какого объекта вы бы к ней не обратились, вы получите одно и то же значение. В самом GM таких переменных тонна, и они описывают текущее состояние всей игры. К примеру, в room находится индекс работающей на данный момент комнаты, room_speed содержит число шагов, выполняемых игрой в секунду (это число обычно 30 , и указывается в настройках конкретной комнаты). Очевидно, в каждый конкретный момент эти характеристики одинаковы для всех.

Выражения

Выражения - это любые конструкции GML, выполнение которых оставляет после себя некоторое значение. Простейший пример: 2+2 , вычисление этого выражения даст результат 4 . Что-нибудь посложнее: 2+2*2 . Это 6 (обращаю внимание, не 8 !). Если GM встречает выражение в коде, он вычисляет его, и на место всего выражения, проще говоря, подставляет получившийся результат. Это никак не влияет на последующие попытки выполнить код - выражение вычисляется каждый раз, когда выполняется фрагмент кода, в котором оно находится. Сложновато звучит, но работает очень просто - программа ничего не запоминает без вашего указания, и даже одинаковые вещи будет считать раз за разом, если приказано.

В этом посте мы будем рассматривать только простейшие выражения - будем трогать только числа и знаки + и - . В следующем посте, когда узнаем о функциях, сможем конструировать более крутые и полезные выражения.

Одно замечание. Не надо делить на ноль. Это плохо.

Может показаться странным - но писать код на GML мы начнём не со скриптов. Прежде чем писать какие-то действия, надо научиться обрабатывать данные из переменных. Поэтому наши первые фрагменты GML будут выражениями, и будут попадать в места, где, казалось бы, коду не место. Потому что выражение само по себе никак не влияет на игру.

Есть ещё один способ использовать выражения - режим отладки. В левом верхнем углу GameMaker у вас есть две кнопочки, а в строке меню есть Run .


Что делает первая опция, вы уже наверняка знаете, а что делает вторая - скорее всего, не поняли, если наугад попробовали. Она запускает игру в режиме отладки, и особенность этого режима - наличие окна с таблицей в два столбца. Первый столбец вы можете заполнять выражениями, второй столбец будет заполняться их значениями каждый шаг.


Удобный способ следить за происходящим. Как с помощью этого режима следить за объектами - обсудим позднее, когда будем думать о применении объектов внутри скриптов.

Одна из самых распространённых задач, которые решают начинающие - сделать движение персонажа. И сейчас всё меньше статей, которые делают это без кода. По большей части потому, что их авторам лень тратить время на сооружение пугающих конструкций из значков, когда это можно записать в две строчки. То, что обучающийся ни слова не поймёт из скрипта, для них неважно или неочевидно.

Немножко математики. Каждая точка в комнате обладает некоторыми координатами вдоль двух осей: x и y , измеряются они в пикселях. В каждом объекте есть эти переменные, и они содержат его положение в комнате. Ось Х направлена вправо, то есть, при увеличении х объект сместится вправо, а при уменьшении влево. Ось Y же направлена вниз (не так, как принято на математических чертежах!) и увеличение y сместит объект вниз (уменьшение, соответственно, вверх). Точка, где x=0 и y=0 - левый верхний угол комнаты. Если изменять эти координаты каждый шаг на одну и ту же величину, объект будет двигаться с постоянной скоростью.

Эксперимент I

Шаги, отмеченные флагом Опционально необязательны. Если вы понимаете, что произойдёт, выполнять их не нужно.

Приготовления:

Начинаем развлекаться!

Теперь содержательная часть. В указанное событие вставьте действие, которое мы обсуждали выше (Jump to position), со следующими параметрами:

Запустите. Поймите, что происходит.

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

  • функции
  • сложные выражения
  • действия
  • простейшие скрипты
  • языковые конструкции
  • обращение к объектам
  • управление ресурсами игры

Программа большая. Надеюсь, успею довести её до логического конца и не сдуться по дороге. Комментарии и вопросы по изложенному и будущему материалу всегда приветствуются!

Итак, ищем на этом сайте эту программу, и качаем. Желательно купить лицензию за 20 $, что бы иметь больше возможностей. Без лицензии вы не сможете создать полноценную игру (хотя это можно, но проще будет с лицензией). Ознакомьтесь с примерами, которые даны вместе с программой, прочитайте основы программы в файле помощи. Вы наверно спросите, зачем нам эта статья, если всё подробно расписано в официальном файле помощи к игре? Да затем, что в официальном файле помощи описаны только коды и основы их пользования, а я расскажу, как сделать игру определенного жанра.

Вы ознакомились с Game Maker, теперь обязательно выучите хотя бы основы GML. Хотя ниже описанный пример platf_primer.gm6 будет использован преимущественно на кнопках (триггерах).

Для лучшего понимания про создание платформера, вместе со статьёй, есть пример платформера platf_primer.gm6 .

Начнём с создания персонажа. Создаём объект, называем например obj_player. Задаём ему движения в разные стороны. В кнопке Left проверяем столкновение объекта, как это показано в примере, и собственно смещение персонажа по оси x на координаты -4. Так само и Right, только координаты +4. И не забываем об изменении спрайтов. Красным шрифтом на рисунках отмечены мои текстовые объяснения действий.

ПРИМЕЧАНИЕ: ЕСЛИ НА РИСУНКАХ ДЛЯ КООРДИНАТ УКАЗАНЫ ЗНАКИ + ИЛИ – , ЭТО ЗНАЧИТ ЧТО ПРИ СОЗДАНИИ ДЕЙСТВИЯ НУЖНО ПОСТАВИТЬ ГАЛОЧКУ НА RELATIVE.

Теперь персонаж ходит влево и вправо. Пожалуй, самое важное в этих играх это гравитация, и естественно нужны платформы. Создаём ещё один объект, назовём его obj_platform – это будут наши будущие платформы описанные выше. Обязательно ставим галочку Solid (твёрдый) в obj_platform.

Переходим опять к obj_player. В Step ставим условия, показываемые на скриншоте и в примере:

Здесь так же объясняются все кнопки, для чего они, и что они дают. Я просто хочу, что бы не бездумно взяли мой пример платформера, и просто вставили свои спрайты. Я хочу, что бы вы поняли, как это всё работает.
Переменная, отображённая ниже, поможет вам ограничить скорость падения до 12 максимум. Это поможет вам избавиться от бесконечного увеличения скорости падения.

Теперь важно сделать прыжок персонажа. Давайте замахнёмся сразу на двойной прыжок.


Теперь при создании персонажа переменная будет равняться нулю.
В Событии press (нажать кнопку вверх) создаём такое:

И теперь создаём цепочку действий в касании с объектом obj_platform.

В принципе, основной движок для нашего платформера готов! Но давайте внедрим в него дополнительные функции.

Давайте сделаем лестницы. Лестницы мы сделаем в событиях Step, Up, Down. Создаём новый объект, и назовём его obj_ladder.

В Step создаём следующие действия:

В Up, создаём следующее…

В Down создаём тоже самое, что и в Up, но координату y=-4, надо заменить на y=+4
Лестница готова.

Создаём объект врага. Назовём obj_enemy. Врагам в событии Create создаём действие, указанное на рисунке, и ставим в нём всё как указанно на скриншоте.

Ещё нам понадобится объект obj_rotate и сделать его невидимым (убрать галочку Visible).

Во враге создаём событие столкновения с obj_rotate и вставляем следующее действие:

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

И в событии столкновения с obj_enemy:

Теперь при касании к врагу, у вас будет отниматься одна жизнь.

Так же само, как и врага, делаем штыки, только они не двигаются. При касании к ним ставим
– то есть -1 здоровья. И при касании к штыкам, будет уменьшаться здоровье.

Когда здоровья будет меньше одного, отнимается одна жизнь.

Вот уже можно сделать неплохой платформер. Идём в комнату и делаем уровень. Расставляем блоки, персонажа, врагов и прочее…

Давайте сделаем, что бы наш платформер был не просто на одной картинке, а был большой уровень, и камера следила за персонажем. Для этого в комнате во вкладке views (виды) делаем следующее:

Hbor и Vbor нужно менять. Это координаты x и y при достижении которых, камера будет двигаться. Например, для вида размером 640х480 можно поставить Hbor:320; Vbor:240. Тога камера будет следить чётко по центру за персонажем.

В уроке мы добавим тень для основного игрока и добавим эффект анимации для тени. Также мы сделаем задний фон для комнаты и познакомимся со скриптами для создания различного функционала в игре.

Видеоурок

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

Картинка что была использована в игре:



Также для создания более динамической игры мы добавили тень для игрока. В игре использовался Sprite Sheet, в котором 9 отдельных спрайтов игрока, поэтому и картинкой теней должно быть тоже 9 штук. Если в вашем случае у вас не 9 спрайтов игрока, то стоит использовать другую картинку для тени или же сделать свою собственную. Если все также, то можете спокойно скачивать тень как в видео уроке:

—> Если вы только-только начали изучать игрострой и еще даже не успели скачать сам Game Maker, предлагаем вам на выбор следующие версии программы:

Топ игр составлен путем пользовательского голосования.

Пишем ИИ для врага в TDS. Часть 1

И так начнём.
Я хочу показать как реализовать 2 вида ИИ, собственно о них.

Сегодня мы разберём первый вид.

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

Создаём в событии Create 2 переменные XX и YY и засекаем будильник.

XX=x
YY=x
alarm[0]=room_sped+random(100)

Эти переменные отвечают за выбор координат в которые и будет стрейфиться враг.
Будильник же отвечает за то, когда враг начнёт стрейф.

В событии будильника:

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

Враг должен постоянно двигаться в координаты и быть направлен к игроку.

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

И код стрельбы тоже сделаете сами (думаю руки прямые).

На этом всё, встретимся на следующем уроке.

Имхо, подход у большинства разработчиков к AI несколько неправильный. Система ветвлений с кучей рандома выглядит как-то неказисто, да и ожидать таким образом от бота интересных тактических решений просто не приходится. А ведь изначальная задача AI состоит не в натягивании игрока, а в красивом проигрыше.

По поводу самой статьи. Код в Степе крайне сомнительный. direction надо использовать исключительно для направления движения бота. Для остальных случаев, вроде направления выстрела и т.д., лучше использовать отдельную переменную.

Game Maker AI — С чего начать?

Game Maker — платформа разработки (в начальной концепции 2D) игр. На данный момент наиболее популярны Game Maker 8.0\8.1 и Game Maker Studio. Последний, к слову, поддерживает кросс-платформенную разработку (что, наверное, и является почти единственным фактором выживания движка в целом).

Итак, ближе к делу. С некоторых пор я занимаюсь разработкой игр в среде GM. И в один прекрасный день передо мной возникла интереснейшая задача — разработать приемлемый AI для игры жанра TDS (Top Down Shooter). Признаться, до того момента я не сталкивался с разработкой искусственного интеллекта, и задача поначалу просто поставила меня в тупик. Три последующих дня я провел в поиске решения (естественно, методом проб и ошибок), и узнал я за эти 3 дня довольно много. На основе своего короткого и болезненного опыта, я постараюсь описать основные методы и сторонние библиотеки по разработке AI в среде Game Maker.

Встроенные средства Game Maker

Несомненно, GM предлагает собственные средства разработки AI (на которых в последствии и строятся сторонние библиотеки). Именно с них я и начал свое путешествие в мир Искусственного Интеллекта. В эти средства входят функции поиска пути, расстояния и угла направления, а также функции проверки столкновений (на мой взгляд, самое полезное из всего вышеперечисленного).
Небольшая классификация функций GM:

Перемещение

Метод базирующийся на сетке — очень мощный инструмент (и используется в основном в профессиональных играх), но он требует, чтобы Вы проделывали всё это, мысля очень осторожно. Вы должны определить, какая область и размер ячейки будет соответствовать оптимальному решению для Вашей игры. Также Вы должны определить, какие объекты должны иметь точную проверку столкновений, это важное значение. Все эти параметры сильно влияют на эффективность метода.

— цитата из справки по GM

Функция создает сетку и возвращаецов
cellwidth,cellheight — размеры ячейки

После создания сетки стоит добавить запрещенные для прохождения зоны. Я пользовался для этого довольно простой функцией:

Итак, у нас есть сетка с непроходимыми зонами. Теперь дело за малым — рассчитать путь для нашего исполнителя:

Наш путь готов, если он конечно существует. Минус все тот же — это путь (пусть и более правильный, точный, безотказный путь), и ничего тут не поделаешь.

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

Определение расстояния и направления

Здесь все довольно просто, за это отвечает всего пара функций:

Конечно, это не единственные функции для работы с расстоянием и направлением, но в большинстве случаев их вполне достаточно. Также в процессе поиска обнаружил любопытный скрипт, определяющий различие между направлениями в градусах (очень полезно при проверке наличия противника в поле зрения исполнителя):

Проверка столкновений

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

На мой взгляд, данные функции не нуждаются в дополнительном объяснении. Могу лишь сказать, что ими удобно пользоваться при реализации стрельбы, или радара, или некой системы наведения для AI.

Сторонние библиотеки

Наконец-то, встроенные средства GM позади, и можно пуститься в свободное плавание — в мир библиотек. Хотя не все настолько радужно, ибо библиотек для разработки AI не так уж много. Попробую перечислить все, что мне удалось найти.

TDS AI Lib

TDS AI — незамысловатое название для библиотеки, предназначенной для разработки AI в играх жанра TDS. На деле же это просто набор достаточно часто используемых функций, встраиваемых прямо в интерфейс GM.

ea4354114ff77399418ccf7b77724482

Функционал TDS AI:

На этом и заканчивается функционал библиотеки. Вердикт: удобно, просто в использовании, но недостаточно. Ведь AI — не просто набор функций.
*ссылку на библиотеку можно найти в конце статьи

Behaviour Tree AI

После TDS AI я наткнулся еще на несколько библиотек и примеров, но ни один из них не заслужил внимания в этой статье. Честно говоря, я был в отчаянии — неужели мне придется самому разрабатывать систему AI (удобную, расширяемую систему)? От подобной мысли веяло ужасом, поскольку у меня не было ровно никакого опыта в разработке искусственного интеллекта.

Но вот случилось чудо, и совершенно случайно я наткнулся на этот шедевр. По началу я не до конца понял его смысл, но мне стало интересно. Я скачал исходник с примером, и после получаса изучения кода я понял, что ко мне попало нечто действительно уникальное. Behaviour Tree — не просто набор полезных функций, это целая система для разработки AI. Именно здесь реализован структурный подход к созданию ИИ, необходимый для удобной работы и расширения.

На описание возможностей BT AI уйдет целая статья. Тем более, такая статья уже есть, ссылку на нее можно найти в конце моей статьи. Исходя из этого, я постараюсь объяснить лишь основы.

Небольшой пример главного скрипта BT AI:

Selector — оператор выбора набора действий
Sequence — набор действий
Condition — проверка условия
Action — действие. вызов скрипта(первый аргумент) с параметрами (остальные аргументы)

Заключение

Напоследок готов повторить, что Behaviour Tree — лучшая моя находка в сфере AI для Game Maker, и я горячо советую ее к использованию. Именно на ней реализован тот самый AI, который мне нужно было сделать.
Глупо будет отрицать, что существует множество других систем для разработки искусственного интеллекта, и многие из них могли просто пройти мимо моего внимания. Буду очень рад ценным дополнениям к моей статье, а также указаниям на мои ошибки, если они есть.

Как в game maker сделать искусственный интеллект

header menu hamburger

27b19b3b64e7235dadd9ec0b9491818d85c29868

GameMaker Studio 2 Desktop

4 star large

11

13

1

5

6

9

ico dialogue close

filterselect blue

filterselect blue

filterselect blue

filterselect blue

filterselect blue

filterselect blue

filterselect blue

filterselect blue

filterselect blue

filterselect blue

filterselect blue

filterselect blue

filterselect blue

filterselect blue

filterselect blue

filterselect blue

Добавьте эту страницу в закладки (Нажмите CTRL + D) так как это руководство довольно длинное, вы сможете закрыть его и вернутся к нему потом. Будет отлично, если вы прочитаете его залпом.

Рекомендую читать его именно там, это руководство было перенесено туда и не будет удалено из Steam!

Множество событий на выбор

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

Вот краткое введение в события, которые мы будем использовать больше всего:

Код внутри события Create выполняется только один раз: когда экземпляр объекта, запускающий код, сначала создается. Здесь вы можете инициализировать большую часть основных переменных и/или придания движению объекту.

События таймера запускаются после их установки. Поэтому, если я установил Alarm 0 до 60 в событии Create, код внутри события Alarm 0 будет запущен через 60 шагов.

Примечание: в GML не обязательно помещать точку с запятой (;) после каждого утверждения. Поэтому не стесняйтесь пропустить её и сосредоточиться на главном коде.

Здесь c будет хранить 9 из-за выражения a + b (что означает, что 4 + 5 как a равно 4, а b равно 5).

Этот код инициализирует локальную переменную price. Предположим, что событие, в котором находился этот код, было событием Step; то переменная может использоваться только в событии Step. Если вы попытаетесь использовать её без инициализации в другом событии, то она вернет ошибку, поскольку она там не существует.

Переменные экземпляра
Это обычные переменные, которые инициализируются путем присвоения значения.

Доступ к этим переменным возможен во всех событиях объекта/экземпляра, после того, как они был инициализированы.

Инициализация с помощью ключевого слова globalvar.

Как только переменная была инициализирована через globalvar, она может использоваться любым экземпляром, присутствующим в комнате.

или использовать с global. prefix…

Таким образом, вам не нужно инициализировать переменную с помощью globalvar, но вы должны использовать global. prefix каждый раз, когда вы хотите использовать эту переменную.

Есть также некоторые встроенные переменные, которые означают что-то особенное в GameMaker. Вот несколько примеров…

Встроенные переменные экземпляра
Это встроенные переменные, которые уникальны для каждого экземпляра. Они также могут быть известны как свойства экземпляра. Вот несколько важных примеров.

Текст, который появляется после //, является комментарием. Это не влияет на код; он там, чтобы вы могли объяснить, что делает ваш код, или писать важные вещи, которые вы хотели бы запомнить, глядя на ваш код.

Встроенные глобальные переменные

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

Функция может и не может содержать аргументы.

Вот несколько примеров…

Знак > открывается в сторону, которая больше, и = конечно же, означает равно. Итак, проверяя, if coins>=200, мы проверяем, больше ли 200 монет или они равны 200.

Таким образом, игрок может купить улучшение только в том случае, если у него достаточно монет. Но что, если он этого не сделает? Мы должны уведомить его, что ему нужно больше монет. Но это нужно только тогда, когда условие не выполняется. Для этого мы используем else.

Код после else выполняется только тогда, когда предыдущее условие if вернуло false. Поэтому, если у игрока меньше 200 монет, он будут уведомлен об этом.

Вы также можете поместить условие после else, так что даже после того, как прежнее условие вернет false, для выполнения кода потребуется еще одно условие else.

Таким образом, вы можете добавить больше else и добавить разный код для разных условий:

Если condition0 истинно, code0 будет запущен, а остальная часть оператора if будет пропущена. Но если condition0 является ложным, оно перейдет к condition1. Если оно истинное, он выполнит code1 и остановится. Но если он тоже ложный, тогда он перейдет в condition2. Если это правда, code2 будет запущен, но если нет, оператор if, наконец, перейдет к последней части и увидит, что нет условия, и выполнится code3.

Оператор if проверяет, больше ли money, чем 40, а затем выполняет код. Цикл while проверяет так же, но разница в том, как работает цикл.

Когда условие, указанное для цикла, становится истинным, выполняется идущий после него код, и когда этот блок кода заканчивается, он возвращается к условию и проверяет его снова. Если условие истина, то он снова выполняет код. Затем снова и снова, и если это истина, снова выполняет код. Он продолжает это делать, проверяет условие, а затем код, и так пока условие не станет ложным.

Давайте возьмем пример выше. Скажем, значение money становится больше 40. Цикл while выполнит код, и продолжит делать это до тех пор, пока условие не станет ложным. Для того, чтобы условие оказалось ложным, стоимость денег должна быть ниже или равна 40.

Теперь все в порядке. Если мы уменьшаем значение money на каждый цикл, в какой-то момент оно должно опускаться ниже 40 и останавливать цикл.

Обязательно чтобы вы реализовали, что условие в итоге стало ложным, и тем самым остановить цикл. Если вы этого не сделаете, то цикл станет бесконечным, который никогда не остановится и приведет к вылету вашей игры.

Не пугайтесь. Это очень просто.

Помните, как в цикле while мы использовали проверку условия перед выполнением кода?

Это так потому, что цикл do..while сначала выполняет весь код, который находится в блоке кода, а затем проверяет условие, чтобы убедиться, что это истина, и должен ли он снова выполнить цикл. Если это так, он возвращается наверх и выполняет блок кода. Затем снова переходит к условию. Таким образом, он продолжает цикл до тех пор, пока условие не станет ложным, разница состоит в том, что он сначала выполняет блок кода, даже не проверяя условие.

Точка с запятой (;) должна быть в конце цикла do. while, потому что без нее конечная часть while(условие) может запутаться с запуском другого цикла while.

Это так же просто, как сказать: «Продолжайте добавлять 1 к coins, пока они не станут равны 10″. Будет продолжать добавлять 1 к монетам, и когда данное условие станет истинным, когда монеты будут равны 10, тогда цикл будет остановлен.

В GameMaker следует использовать do. until, но не do. while.

Тут вы можете определить состояние посередине. Но что это всё такое?

Массивы похожи на переменные, у них также есть имя и хранятся некоторые значения, но в отличие от переменных они могут хранить несколько переменных (элементов) под тем же именем.

Чтобы назначить или получить доступ к элементу внутри массива, поместите идентификатор элемента (число) в квадратные скобки после имени массива. Вот так:

Для таких людей будет создана отдельная секция в этом руководстве, с благодарностями. Я тоже человек и не владею чистым Английским, я буду вам очень признателен за помощь. Алсо,
более лучшие и удобные формулировки приветствуются.

Читайте также: