Как начать программировать на Action Script 3 если вы никогда не программировали!

Еще до того как я начал делать игры, я знал, что без программирования я далеко не уеду. Но вся проблема была в том, что я своей творческой натурой (дизайнера), не мог понять весь «смысл» кода. Как оказалось в последствии, программировать на АС3 очень легко, самое главное понять ЛОГИКУ языка. В этой статье я попытаюсь объяснить логику АС3 для тех кто никогда не сталкивался с программированием вообще.

И так представим, вы идете по тротуару, и вам надо перейти на другую сторону. Какие действия вы выполните? Сперва посмотрите нет ли машин слева, затем если их нету начнете движение, дойдя до середины вы остановитесь и посмотрите направо и далее если машин нету вы продолжите движение. И вот мы на другой стороне. Попробуем представить это со стороны вашего мозга:
  • Начальная цель — перейти дорогу.
  • Первое действие — посмотреть на лево.
  • Состояние — если машин нету, идем. Если машина есть, опасность, ждем.
  • Второе действие — посмотреть на право.
  • Состояние — если машин нету, идем. Если машина есть, опасность, ждем.
  • Конечная цель — дорога перейдена, цель достигнута.
На таком принципе строится практически любой язык программирования. Вы задаете цель, создаете действие, проверяете состояние и ждете завершение цели. Приведу пример как данную схему применить конкретно в игре. У нас есть синий квадрат, при нажатии на него он должен переместиться на 100 пикселей влево и остановиться.
  • Начальная цель — переместить квадрат на 100 пикселей влево.
  • Состояние покоя — ожидаем нажатие на квадрат.
  • Действие при нажатии — двигаем квадрат.
  • Состояние при движении — проверяем насколько сдвинулся квадрат, если начальная цель достигнута останавливаемся, иначе двигаемся дальше.
  • Конечная цель — квадрат передвинулся на 100 пикселей, цель достигнута.
Как видите ничего сложного тут нету. Поняв логику кода, я понял какие действия мне нужно прописывать для движения квадрата и самое главное я понял зачем я должен это делать. С тех пор когда я сажусь писать новый код, я всегда мысленно стараюсь представить себе такую структуру: что и когда каждый игровой объект будет делать, какие действия предпринимать или какие события ожидать.
Пробуйте — и у вас все получится!!!
  • +2

Комментарии (27)

0
Эм. Делайте уже уроки хватит филосовствования XD
+2
Толку от уроков ноль, если человек не понимает зачем/что он это делает. Код просто копируется, без понимания сути процесса.
0
Можно философствование разбавить кусочками кода =) если человек не знает что такое циклы операторы условия функции то никакие философские тексты не помогут ему это понять.
гораздо дельнее сказать что передвинуть квадрат можно так: sq.x--; sq.x-=1; sq.x=sq.x-1; чем просто сказать: двигаем квадрат.

Многие кстати не поймут объяснений пока не увидят конкретный пример =)
0
Согласен, философия должна иллюстрироваться конкретными примерами, иначе это будет только теория…
+1
Ребят, в этом то и проблема, то что вы уже знаете что к чему, и вам кажется что «философия это плохо». Я же вспоминаю себя год назад, когда мне не хватало именно логики кода, и никакие примеры и уроки не помогали.
+1
Нет, ты не правильно пронял, что мы говорим… Я не говорил, что это плохо, просто если сразу же добавить небольшие куски кода демонстрирующие эту философию на практике, это будет гораздо полезнее. ИМХО. :)
0
Для меня это практически тоже самое что и код с комментариями. Вроде все понятно, но зачем оно нужно никто не поясняет.
Я же попытался показать, как начать программировать, если ты вообще никогда этого не делал.
Вот давай я приведу пример чтобы было понятно. Стандартно практически все уроки выглядят так:
// двигаем квадрат
sq.x-=1;
Но по сути правильнее было бы написать что:
«sq» — наш объект который мы собираемся двигать
«х» — координата по которой мы собираемся двигать
"-=" — математическая функция вычитания
«1» — значение которое будем вычитать
Вот такого детального описания, я не встречал практически нигде в уроках. Проблема в том, что почти все кто пишет уроки, думают что все гении и проще написать sq.x-=1; чем детально расписать что и зачем.
+1
Это и не нужно так подробно писать, это база.
Набор функций, операций, типы данных, правила построения выражений, методы передачи параметров.
Если это ООП язык, то еще добавится тележка ООП правил для данного языка.
Все это нужно выучить 1 раз при изучении языка. А учитывая что многие языки похожи, этого хватит на много раз.
Это как для художника — понятие палитры, методы передачи перспективы, света и тени. Или как ноты для музыканта.
Подробно стоит описывать какие-то особенности. Что-то редко используемое, обход бага, способ работы с чем-то, про что нет внятной документации или какой-то сложный алгоритм например.
0
Это и не нужно так подробно писать, это база
База для кого? Я когда начал заниматься АС3, я знал 1 команду — «stop();» и то потому что я ее юзал в анимации. И честно, мне бы очень не помешало вот такое разжевывание кода.
0
Просто изучать нужно с основ языка. Иначе можно месяцы тупить над примерами, без понимания что к чему.
0
Основа любого языка программирования — это понимание как вообще он работает, то есть его логики, а не
Набор функций, операций, типы данных, правила построения выражений, методы передачи параметров.
+1
Как раз таки в языке нет логики. Это просто набор форм + синтаксические + семантические + лексические правила.
Возможно, под логикой — вы понимаете модель вычисления. В случае as3 — императивная, в которой вы описываете процесс вычисления в виде инструкций, изменяющих состояние программы.
0
в которой вы описываете процесс вычисления в виде инструкций, изменяющих состояние программы.
Спасибо добрый человек! Видимо моего словарного запаса не хватило, что бы правильно это выразить :)
+2
Пробуйте — и у вас все получится!!!
Пробую, мастер. — Не получается! Сколько мне еще пробовать, мастер?
0
терпения нет в тебе, юный подаван :)
+3
Вы все, конечно, правильно описали. Это алгоритмическое мышление. Задача разбивается на подзадачи => подзадачи разбиваются на менее абстрактные подзадачи =>… => пишется псевдокод => транслируется в код.
Только для тех, кто не знает базы (типы данных, конструкции языка, структуры данных платформы, принципы ооп, и т.д. и т.п.) — это абсолютно бесполезно, т.к. человек не сможет «спустить задачу» на низкие уровни абстракции.
Поэтому лучше бы вы посоветовали новичкам учить матчасть, а там в хорошей книге — в примерах показывают процесс «от задачи, до кода».
  • n0uk
  • n0uk
0
Я про логику AS ничего не слышал, но есть логика программирования:

Если хочется запрограммировать сложную задачу A, то надо ее разбить на более мелкие задачи Bi. Если какая-то задача Bi — тривиальная, то ее программируем. Если Bi — сложная, то поступаем с ней как с задачей A.

А вот если заменить «программировать» на «решить», то получится универсальный метод избавления от проблем :)
  • 4mlr
  • 4mlr
+1
Автор прав, только это не относится только к AS3.

Надо знать базовые вещи языка.
А дальше самое сложное — составить алгоритм
Потом оформить в виде псевдокода (опционально).

Запрограммировать то, что уже понятно и разложено по полочкам не составляет труда.
0
пхххххххх… Ну разбивать задачу на подзадачи думаю должен уметь каждый человек, практически бессознательно. Но что-то не каждый становится программистом. ВИдно данных 2х абзацев явно не достаточно.

Описывать логику написания кода — нужно. Но только не так уж сильно утрируя тему.
+12
Есть один железобетонный способ изучить язык программирования за 21 день, к АС3 тоже применимо)))

Изучить с++ за 21 день
0
^_________^
0
Мне бы в начале пути такая статья вряд ли помогла бы.Первую игру я сделал по уроку создания простой игры, типа лови или не лови.Там были скриншоты, а так же объяснялась почти каждая строчка кода.
Самое главное что я считаю важным знать при изучении языка программирования, это английский язык.Если не знать его многое можно не понять, если не знать в начале, то смотреть в переводчике каждое слово в программировании.
Я например начав изучать c++ был удивлен тому что все задается понятными словами if,else,include…
Кстати вот урок по которому я сделал первую игру
demiart.ru/forum/index.php?showtopic=87659

Во втором комментарии к этой статье есть ссылка на мою игру)))
0
я сделал
Сделал или скопировав код, заменил графику?
0
Это тоже своеобразное «сделал игру» — вон создатели игры для SNES Darkwing Duck, оказывается тоже ничего не писали, а просто впихнули свою графику и свои уровни в какую-то другую китайскую аркаду. И ничего — многим игра понравилась.
0
Вопрос тут не в том понравилась ли кому то игра, а в том понял ли он код который копировал ;)
Я таким образом «делал» подгрузку картинок с xml, примеров валом, а что я делаю непонятно. В итоге пока мне человек каждую строку кода не разжевал, я не мог понять что к чему.
+2
Вот это вот уже зависит от настроя, если ты просто хочешь создать копию, то можно скопировать код и заменить графику.Бывало у меня и такое когда лень разбираться, но тут я все изучал, да и многое я помню у меня не получалось, сделал её часа за 3.
Главное что этот урок мне помог.Там и структура приведена, и код, и объяснено, так еще и скриншоты чуть ли не как каждому действию.
Вот сам представь, как бы ты отнесся к этому уроку, если бы горел желанием сделать игру?
Я бы сказал:«все конечно круто, а игру то как сделать?».
+2
Если кому надо могу выложить код новогодней игрушки про котэ. Он конечно не as3 в подобающем виде но в общем и целом кое что проясняет.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.