10 лучших игр по программированию, которые улучшат ваши навыки

Original author: madhur912
  • Translation

Вы помните далёкие дни из детства, когда вы, проводили целый день, а иногда даже не ели целый день, чтобы поиграть в игры на Nintendo? (Ах, дни Mario и Contra!!!)

С того времени игры претерпели гигантские преобразования и сфера стала более обширной. Это уже не просто хобби. Сейчас в Интернете доступно множество игр, связанных с программированием, и вы можете использовать их чтобы изучить и отточить свои скилы в увлекательной форме. Более того, эти игры могут помочь вам улучшить навыки решения задач, поскольку вам нужно будет решать задачи различной сложности, а также соревноваться с другими опытными программистами по всему миру. Специально к старту новых потоков курсов Fullstack-разработчик на Python, разработка на C# и разработка на Java, в этой статье мы отобрали несколько таких игр, играя в которые можно параллельно качать и себя самого.

1. Untrusted

Приключения доктора Эвала!

Untrusted – это приключенческая онлайн-игра, предназначенная для людей, которые хотят попрактиковаться и проверить свои навыки в JavaScript . В этой игре от вас требуется направлять доктора Эвала через машинный континуум и изменять его реальность, чтобы получить свободу. Игра предоставляет вам игровую среду, похожую на мошенническую, и окно консоли с JavaScript-кодом. У вас будет доступ ко всем исходным кодам, но, чтобы спастись, вам нужно внести необходимые изменения в этот код.

В игре есть несколько уровней, таких как cellBlockA, где вы будете генерировать и удалять стены, theLongWayOut, в котором вам нужно создать новый выход, и многое другое. Игра – довольно увлекательное путешествие, если вы обладаете хорошими знаниями концепций и программирования JavaScript. Интерфейс игры выглядит так:

2. Robocode

Было бы здорово изучать программирование, и создавать боевых роботов-танков (звучит увлекательно, правда?).

Да, вы можете сделать это в известной игре – Robocode. Robocode позволяет разработать боевого робота-танка с использованием Java или .NET, для борьбы с другими танками. Вам нужно написать ИИ для робота, чтобы он знал, что делать и как реагировать на события, происходящие на поле битвы.

Игра очень полезна для изучения и практики нескольких языков программирования, таких как Java, Scala, и C# . Она также поможет вам попасть в сферу искусственного интеллекта . Более того, Robocode предоставляет вам полноценную среду разработки: есть собственный установщик, встроенный редактор роботов и компилятор Java. Кроме того, Robocode – это проект с открытым исходным кодом, и вы все можете придумывать свои собственные надстройки или режимы, чтобы продемонстрировать свои навыки разработки.

3. Elevator Saga

Elevator Saga поможет вам продемонстрировать свои навыки в JavaScript в контексте программирования движения лифтов для эффективной перевозки людей. Задачи самые разные, начиная с простых: перевезти 15 человек за 60 секунд или меньше и т. д., И они постепенно усложняются. Вам нужно придумать оптимизированный алгоритм, чтобы сократить время ожидания пассажиров. Игра действительно очень полезна для работы над вашими навыками JavaScript и подходами к оптимизации алгоритмов.

Кроме того, интерфейс Elevator Saga довольно прост, всё, что вам нужно, – ввести свой код в окно ввода и нажать кнопку «Применить», чтобы начать испытание. Некоторые из примеров кода для Elevator Saga приведены ниже, чтобы дать вам общее представление:

  • чтобы сообщить лифту о переходе на 1-й этаж: elevator.goToFloor(1);

  • чтобы остановить лифт, если он движется: elevator.stop();

  • чтобы получить номер этажа, на котором в настоящее время находится лифт: elevator.currentFloor(); 

  • и многие другие.

4. Vim Adventures

Если вы часто испытываете трудности с VIM, то Vim Adventures наверняка создан для вас!! Vim Adventures – это онлайн-игра, которая позволяет вам изучать горячие клавиши VIM и другие известные концепции в увлекательной и интересной форме с помощью игровой среды, подобной Zelda. Эта игра упрощает изучение и понимание мощного текстового редактора Vim, который впоследствии поможет вам стать более эффективным программистом.

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

5. CodeCombat

CodeCombat в основном рекомендуется тем людям, которые имеют небольшой или даже нулевой опыт в программировании, поскольку игра не только помогает вам практиковать свои навыки, но и обеспечивает замечательный процесс обучения в формате игры. Вы можете изучить различные языки программирования, такие как Python, JavaScript, CoffeeScript, Lua и т. д., с помощью игры. Вам нужно будет написать код на любом из этих языков, чтобы сообщить персонажу, что ему нужно делать. Более того, игра начинается с простых головоломок и задач, а затем уровень сложности постепенно растёт. И, да, в игру также включены различные обучающие программы, позволяющие овладеть синтаксисом языка.

Кроме того, CodeCombat – это проект с открытым исходным кодом, и вы можете  не только учиться и играть, но и вносить вклад в исходный код, чтобы добавлять новые функции, исправлять ошибки и т. д., чтобы повысить уровень своего программирования. Что ещё нужно?

6. Flexbox Defense

Flexbox Defense – действительно один из лучших способов укрепить свои знания и навыки CSS Flexbox! Это игра в жанре Tower Defense, в которой вам необходимо не дать приближающимся врагам пройти через вашу оборону, переместив башни на такое место, чтобы турели могли стрелять во вторгшихся врагов, прежде чем они пройдут через вас. Вам необходимо использовать свойство ‘justify-content’ в контейнере для размещения ваших башен. Несколько наиболее распространённых значений, принимаемых свойством «justify-content», следующие:

  • flex-start: группировать элементы в начале главной оси;

  • flex-end: группировать элементы в конце главной оси;

  • center: группировать элементы в центре;

  • space-around: равномерно распределить элементы по главной оси так, чтобы вокруг всех элементов было равное пространство.

Есть много других свойств CSS Flexbox, которые используются в игре, такие как align-items, flex-direction, order и некоторые другие.

7. Code Hunt

Ещё игра в списке, которая может помочь вам попрактиковаться и улучшить свои навыки программирования в игровой манере, – это Code Hunt. Это игра по программированию от Microsoft Research. Игра основана на головоломках, которые вы должны изучить, используя данные подсказки и контрольные примеры. Сначала вам нужно определить шаблон, а затем написать решение. Code Hunt позволяет вам овладеть двумя известными языками – Java и C #. Игра разработана таким образом, чтобы научить вас основам этих двух языков.

Поскольку Code Hunt принадлежит Microsoft, её предпочитают миллионы студентов (и даже профессионалов) во всём мире, и, если вы с нетерпением ждёте, чтобы укрепить свои навыки владения Java или C# более увлекательным способом, вы, безусловно, можете попробовать.

8. CheckIO

CheckIO – это игра по программированию, которая позволяет вам улучшить свои навыки, особенно для двух языков – Python и TypeScript . Игра рекомендуется как новичкам, так и опытным программистам для повышения уровня своих навыков, так как она предоставляет вам множество захватывающих задач различных уровней сложности. Каждый набор этих задач расположен на разных островах, и пользователям необходимо решить требуемую задачу или головоломку, чтобы перейти с одного острова на другой. Кроме того, обогащающее и поддерживающее сообщество CheckIO помогает вам делиться знаниями и опытом с разными блестящими умами по всему миру.

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

9. Screeps

А вот и ещё одна популярная игра по программированию для всех программистов – Screeps! Это онлайн-стратегия в реальном времени, которая требует от вас хотя бы некоторых базовых знаний в области программирования. В этой игре вам нужно создать свою собственную колонию в определённом мире, доступном всем игрокам. А колония сможет добывать ресурсы, создавать юнитов и завоевывать территории. Более того, необходимо запрограммировать реакцию юнитов на события, и вы можете сделать это, используя язык программирования JavaScript . 

Вам также необходимо знать, что написание скрипта для Screeps ничем не отличается от написания любого другого приложения JavaScript. И вы также можете разделить свои скрипты на модули с помощью синтаксиса Node.js, чтобы сделать игру более удобной.

Кроме того, вы можете использовать другие языки, такие как C++ и т. д., А также можете компилировать их с помощью WebAssembly. А также Screeps позволяет вам вносить свой вклад в разработку игрового движка и изменять поведение игровых объектов.

10. CSS Diner

Наконец, CSS Diner – игра по программированию, которая помогает вам практиковаться и совершенствовать свои навыки CSS. Игра помогает вам управлять селекторами CSS на всех 32 уровнях, включённых в игру. И уровень сложности каждого раунда повышается по мере прохождения игры. Игра состоит из различных захватывающих уровней в зависимости от нескольких важных атрибутов, таких как id, classname, empty, first-child, only-of-type и многих других. Более того, если вам нужна подсказка для решения определённого уровня, всё, что вам нужно сделать, – это навести указатель мыши на элементы в таблице и просмотреть HTML-разметку.

Игра предоставит вам лучшее понимание для выбора определённых элементов в HTML и CSS и впоследствии поможет вам перемещаться по элементам DOM, когда дело касается JavaScript. И самое приятное – то, что вы можете играть в CSS Diner в своем браузере без каких-либо затрат или хлопот, таких как вход в систему, создание учётной записи и т. д.

Также можно принять во внимание несколько других игр: Codewars, SQL Murder Mystery и Duskers. Излишне говорить, что почти каждый технический энтузиаст так или иначе склонен к играм. А с помощью упомянутых выше игр по программированию вы можете улучшить свои навыки более увлекательным и авантюрным способом. Тем не менее вам не рекомендуется идти на компромисс с продолжающимся процессом обучения и использовать эти игры в течение ограниченного времени, поскольку избыток чего-либо всегда неблагоприятен.

Если у вас есть на примете полезные игровые проекты подобные этим, но в список не попавшие — делитесь ими в комментариях!

Играми поделились, а теперь поделимся и релевантными программами обучения. Тем кому в освоении нового не хватает "крепкого плеча" ментора, которая поможет довести начатое до конца — добро пожаловать на наши программы Fullstack-разработчик на Python, разработка на C# и разработка на Java и да прибудет с вами сила.

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

Другие профессии и курсы
SkillFactory
Школа Computer Science. Скидка 10% по коду HABR

Comments 12

    +3

    А www.codingame.com? Множество языков, задания в красивой игровой форме. Регулярно проходят международные конкурсы, можно получить призы и приглашение работать в хорошую компанию.

      +3

      А Colobot+Ceebot считаются худшими? ;-)

        0
        Кликбейт жесток и беспощаден.
          0
          Есть ещё очень камерная Robot Battle с собственным языком RSL и очень некамерная Second Life с собственным языком LSL.
          Языки, кстати, довольно похожи, несмотря на. Оба являются event-driven языками и содержат дикое незапоминаемое количество функций и переменных искаропки.
            0

            О, как жаль, что этот проект канул куда-то в забвение!
            На современных технологиях графику как в оригинале уже может потянуть браузер, а геймплей уже вполне можно было бы сделать сетевым через вебсокеты или webrtc.
            Ребятам из Эпситек удалось выбрать очень аккуратный и лаконичный баланс между сложностью и полезностью программирования в игровом мире.

            +4

            Свои пять копеек:


            • Hack 'n' Slash — код писать не нужно, но придётся основательно разбираться в существующем (Lua байткод).
            • Human Resource Machine и её сиквел 7 Billion Humans — довольно просты в понимании, но 100%-е прохождение с полной оптимизацией весьма сложное.
            • TIS-100, SHENZHEN I/O, Exapunks — хардкор на ассемблере от Zachtronics. SpaceChem несколько отличается, но тоже про программирование, пусть и графическое.

            Ну и https://codingame.com уже вспомнили, отличный ресурс с поддержкой кучи ЯП для решения.

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

                Перевод elevator saga
                https://github.com/space2pacman-misc/elevatorsaga-translation


                P. S. Делал давно. Если увидите ошибку — сделайте пулл реквест.

                  0
                  Vim Adventures — не зашло. Порог входа ещё выше чем в vim ;]
                    +3
                    The Deadlock Empire
                    Игра про многопоточность и блокировки. Цель ввести многопоточную программу в непредусмотренное состояние блокировки.
                      0
                      Ultima online+ Injection
                      yoko.com.ua/rus/injection.htm
                        0
                        Недавно в онлайне висела игрушка Ruby Warrior — там нужно было запрограммировать поведение воина, чтобы он мог победить врагов и перейти на следующий уровень. Забавная игрушка, хотя и не без глюков: один раз я случайно развернул воина задницей к противнику и из такой позиции стал атаковать — и, что самое смешное, в итоге победил, хотя и с большими потерями :)

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

                        Only users with full accounts can post comments. Log in, please.