Дата: Понедельник, 07.05.2012, 21:15 | Сообщение # 1
( Разлагаюсь )
Сообщений: [936]
Game Maker Language. Синтаксис
Плюсы По сути, GML является упрощенной версией нескольких языков программирования. К нему довольно близок Pascal, но отсечены ненужные корни. Так, например, здешний синтаксис не требует точек и точек с запятой после каждой команды, а подпрограммы создаются с помощью {}, а не громоздких begin/end. Это позволяет быстро писать код, не отвлекаясь на то, что вам не нужно, не занимаясь ловлей багов, созданных непостановкой одного крошечного знака. Не считается ошибкой и не заданная в начале программы переменная. Наглядный пример: Pascal: program p1; var a:integer;b:real;c:string; begin a:=13; b:=0.25; c:='Текст'; end.
GML: a=13 b=0.25 c='Текст'
Изменения величины переменной тоже стали проще. Достаточно написать a+=13, чтобы добавить 13 в ячейку переменной а, тогда как в случае с Pascal дело обстоит так: a:=a+13. Это экономит время при больших названиях переменных.
В чем подвох? Пользуясь упрощенным синтаксисом, не стоит забывать о сортировке и упорядочивании кода. Иногда легко можно запутаться в коде при написании большого или даже компактного скрипта: фигурные скобки и остальные "знаки пунктуации" в один символ могут помешать нам разобраться в собственном коде, если дело было давно. Наглядный пример: if random(3)<=1 {if a=b {if b>20{c=3 d=100} else {c=2 d=300}} else {e=341 f=22}} //OH SHI~
Как упорядочить код? Пользуйтесь той большой клавишей, что у вас есть над правым шифтом. Проще, говоря, разбивайте цельный код на разные строки: это позволить быстро менять код и находить баги. Оставляйте комментарии. То, что находится за //, может вам здорово помочь. Иначе когда-нибудь можно столкнуться с проблемой разбора кода полугодичной давности. Кроме того, это полезно, если работаешь в команде или создаешь код для других: возможно, они все-таки уследят за ходом вашей мысли. Наглядный пример: if random(3)<=1 //В одном случае из трех { if a=b { //Если оружие героя равно оружию противника if b>20{c=3 d=100} //И при этом здоровья меньше 20хп, патроны героя равны трем, противника - 100 else {c=2 d=300} //И при этом здоровья больше/равно 20хп, патроны героя равны двум, противника - 300
} else {e=341 f=22} // Меняем кол-во пятен крови на лице ГГ и количество травинок в радиусе поражения }
Что же в результате? Мы имеем простой и эффективный скриптовый язык. Это действительно здорово, особенно когда времени мало, а энтузиазма хватает. Через некоторое время навыки могут отточиться до такой степени, что за написанием кода можно вообще не следить, создавая замысловатые конструкции на ходу. Удачи! Рандомный текст.
Дата: Понедельник, 07.05.2012, 22:20 | Сообщение # 2
( Не ленимся =) )
Сообщений: [1854]
Quote (Scorpio)
a:=a+13
Чисто для дополнения к паскалю, есть еще команда INC(X, C); При использовании INC(X); увеличивает X на единицу, при INC(X, C); увеличивает X на C. И команда DEC(X, C); для вычитания. =)
Scorpio, Не плохо Хотя кто хотя бы поверхностно знает и паскаль и ГМЛ (как я) это понимает... И практической пользы я не вижу от статьи... Хотя может кому из новичков пригодится...
Scorpio, Не плохо Хотя кто хотя бы поверхностно знает и паскаль и ГМЛ (как я) это понимает... И практической пользы я не вижу от статьи... Хотя может кому из новичков пригодится...
Да, разумеется, от статьи нет практической пользы для более-менее разбирающихся. Но она может пригодиться тому, кто знаком с паскалем и собирается работать в ГМ. Доработаю еще со временем, увеличу, постараюсь добавить и менее знакомые людям вещи. Рандомный текст.