Code combat

Oct 16, 2018 12:23


Моя работа требует минимально знания языка программирования JavaScript. В мае этого года, еще работая на прошлой работе, я решила освежить его в памяти. Изучать что-то мне удобнее по 2-3 источникам - основному и дополнительным, так как один из источников может что-то упустить, оказаться слишком субъективным (например, автор горячий поклонник фреймворка React и о других упоминает только вскользь) или объяснить непонятно.

Основными источниками тогда выступили книжка от издательства Head First и практические задачи Дмитрия Трепачева, а для дополнительного я решила выбрать что-то легкое и забавное. Оказалось, что для изучения языков программирования есть целые игры, и это не что-то типа Flex Frog (https://flexboxfroggy.com/#ru), а настоящие игровые империи!

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



Конкретная задача:



Тут тебе и золото, и серебро, и другие герои, на некоторых уровнях пустынные яки, противники и т.д. Поведение героя описывается на JS. Первые уровни начинаются с линейных команд - пойти вправо, потом влево, добавляются циклы и условия (если справа враг - то сражаться, если врага нет - то идти прямо).

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

Некоторые задания были легкие, над некоторыми приходилось подумать очень серьезно. Я забросила игрушку ближе к концу, меня стали смущать 2 вещи - во-первых, получалось, что отработав на практике массивы, объекты, циклы и функции я зачем-то учила неведомый никому фреймворк, так как методов объекта героя .build(fence) или .attack(nearestEnemy) в реальном языке не существует, кого там поражать, разве что браузер своим кодом.

Во-вторых, в какой-то момент для решения задач стали требоваться методы, которые не давались в пояснениях к заданиям и раньше не использовались нигде. В реальной жизни можно хоть в Google поискать ранее не использованные методы - «javascript как получить url страницы», ага, нужен объект document, в свойстве которого находится объект location, свойство которого href как раз содержит искомый URL. А в игре на этом этапе на решение каждой задачи уходила куча времени, и я отказалась от CodeCombat.

Сказать, что я сильно продвинулась благодаря CodeCombat точно нельзя, но если относится к сервису как к виду относительно полезного отдыха, то почему бы и не да
Previous post Next post
Up