В какие компьютерные игры играют программисты
Прошло четыре с половиной года с тех пор, как я, пользуясь свежеполученным инвайтом, написал предыдущий хабрапост с подобным заголовком. Большой срок для игровой индустрии. Успело появиться много новых хороших игр, и недавно я ощутил настоятельную необходимость поделиться знанием о них с широкой общественностью.
Несмотря на опасность, что вновь возникнет спор относительно названия, я решил оставить его прежним, дабы сохранить преемственность. Можно воспринимать его как «игры для тех, кто имеет способность к программированию», или ещё как-нибудь в этом духе. Однако я полагаю, что вы читаете этот пост не ради рассуждений о семантике, потому перейдём к сути.
Shenzhen I/O
Если вы когда-нибудь работали с крупными системами моделирования вроде LabView или Simulink, то алгоритм работы Shenzhen I/O от Zachtronics будет знаком: при помощи блоков с кодом вы создаёте схему-программу, добавляете устройства ввода/вывода/хранения информации и стараетесь получить заветный результат. Всё это подаётся в игровой форме с ограничениями: диапазон инструментов куда уже, а код можно писать лишь на Assembler. Так что интересно это будет скорее инженерам, а также тем, кто хочет заглянуть в смежную с программированием сферу.
Преимущества: наличие графики, возможность создавать свои уровни и тестировать чужие.
Недостатки: стоимость (349 руб.), доступность только на PC, отсутствие высокоуровневых языков.
Screeps
Отличная MMO-стратегия, где, чтобы стабильно выигрывать, необходимо хорошо прокачать свои навыки программирования. Хорошая графика, большая вариативность и число онлайн-пользователей привлекут геймеров, а возможность использовать любимый язык (с WebAssembly) и даже готовые куски кода – опытных программистов.
Преимущества: графика, вариативность, мультиязычность.
Недостатки: не подойдёт для новичков, высокая стоимость (699 руб.).
Bot School
Первоклассный квест GridLight, рассчитанный на детей, желающих сделать первые шаги в программировании. Как и в случае с else Heart.Break(), во главу угла стоит именно игра, а уже на неё наложено обучение программированию. Привлекает наличие нескольких персонажей, разнообразие заданий и, конечно же, анимация.
Преимущества: отсутствие регистрации, графика, сюжет, возможность играть без опыта программирования.
Недостатки: небольшая продолжительность, и без того растянутая при помощи анимации.
Попробовали эти игры? Нашли свои? Делитесь впечатлениями! Обучающие игры для разработчиков — это перспективный, востребованный жанр, и вы можете сказать в нём своё слово, поступив на факультет разработки игр. Ждём будущих Кодзим и Кармаков!
Снова здравствуйте, сегодня мы поговорим о таком вообще-то необычном явлении, как игры про программирование. Или игры для программистов. Короче говоря, игры, где чаще всего нельзя напрямую решать какие-то проблемы, а нужно составлять указания и инструкции для их решения. Итак, для кого они вообще?
(всё это и еще больше мы рассказываем в видео-версии, которую можно найти в конце статьи; в ней можно посмотреть геймплей игр и другие материалы по теме)
Их стоит разделить на несколько категорий: первая — это обучающие игры, которые должны помочь детям или студентам понять основы программирования, составления алгоритмов, общие команды и принципы. Например популярный графический язык Scratch, которым можно пользоваться прямо из броузера. Или российская система ПиктоМир. Даже столь известный язык как BASIC при своём создании в начале 60-х задумывался как упрощённый вариант с синтаксисом, понятным непрограммистам.
Следующая категория — игры про программирование и для владеющих его основами. Игрокам уже нужно использовать свои навыки, чтобы добиться победы, т.е. в игре может использоваться какой-то реальный язык программирования или его подобие. Разумеется, в таких играх обычно есть подробный мануал.
И наконец, алгоритмические игры, где программирование является малозаметной и органичной частью игрового процесса.
Совсем не обязательно, чтобы написание алгоритма было представлено в виде текстовых команд: например, существует серия The Incredible Machine, головоломка, где из элементов нужно строить сложные механизмы для выполнения каких-то простых задач. Лопнуть все воздушные шарики на экране, проводить мышей к сыру, запустить ракету и тому подобное — уровней море. У неё есть и более современный аналог, Crazy Machines, и даже римейк от тех же авторов. Для решения вам даётся набор блоков: планки, мячи, розетки для электрических приборов, но не все строительные блоки являются статичными: в некоторых можно выставить таймер, или сделать так, что они начинают работать после включения или срабатывают на каждый второй раз, или выполняют сортировку. Огромный простор для алгоритмического творчества.
Ну, а если смотреть на совсем популярные игры, то например в Dragon Age: Origins можно детально, пошагово регулировать поведение ваших сопартийцев в бою. С новыми уровнями у них даже открываются новые опции. Можно было выбирать кого атаковать сначала, когда применять скиллы или магию, при каких условиях переключаться на других врагов и тому подобные вещи. Чем не алгоритм?
Но перейдём к истокам зарождения вопроса: когда же всё-таки программисты стали играть со своими коллегами? А это произошло в далёком 61-м году, на заре компьютерной эры, когда группа разработчиков из американской компании Bell Labs: Виктор Высоцкий (сын русских эмигрантов), Малькольм Дуглас МакЭлрой и Роберт Моррис соорудили первую игру, если так можно её назвать. Изображений или кода не сохранилась, но концепт был позже описан и опубликован. Эта игра, Darwin, представляла из себя «битву программ», т.е. используя три доступные функции — probe, kill и claim, надо было составить такую программу, которая бы перезаписала вражеский код, не давая им размножаться. И самое интересное, что битвы происходили прямо в памяти реального мейнфрейма IBM 7090 без какой-то виртуализации — неправильный ход, и синий экран, вернее, тревожные огоньки на консоли оператора! Это было сделано для повышения быстродействия, чтобы не писать интерпретатор. Игра просуществовала недолго — всего несколько недель, пока не была придумана «ультимативная» программа-убийца, которая не оставляла шансов для соперника.
Но наследие Дарвина не было забыто, и однажды другой автор, Александр Дьюдни, тоже учёный, популяризатор науки, автор научно-фантастических романов и сборников поэзии, описал в деталях схожую концепцию с рядом доработок. Он, разумеется, основал идею на Darwin. Игра называлась Core War и подробная статья о ней появилась в журнале «В мире науки» в 1984-м году. В ней уже полем битвы служила не память реального компьютера, а виртуальная среда воображаемого компьютера MARS. Код противоборствующих программ напоминал язык ассемблера. Хотя автор не представил исходных кодов, разные энтузиасты создали свои версии, которые оказались столь популярны, что по этой игре стали проводиться конкурсы на лучшую программу, появился свод правил и стандарты ещё в конце 80-х (вот оно, зарождение киберспорта!), затем и множество более поздних реализаций, и в результате соревнования проводятся по сей день. И, наверняка, собирают больше зрителей, чем стримы Старкрафта.
Следующая игра, Robot War 1981-го года была гораздо более user-friendly и приближена к традиционным компьютерным играм. Её автором был Сайлас Уорнер, известный по своей другой игре, Castle Wolfenstein, той самой, что вдохновила id Software на римейк и долгоиграющую серию. Кроме того, Castle Wolfenstein считают первой стелс-игрой, но не о ней сейчас речь.
Прототип Robot War был создан (или подсмотрен) автором во время работы с системой PLATO еще в 70-е. PLATO была уникальным инкубатором идей, где впервые появились многие вещи, привычные нам сегодня: форумы, электронная почта, веб-приложения, ролевые игры, многопользовательские танковые шутеры и многое другое. В этой игре предлагалось самостоятельно разрабатывать AI роботизированного танка. Размер кода был ограничен 256-ю строками, что не так мало. Ну, а после тестирования можно вести своего железного друга на арену, для выяснения отношений с другими жестянками, что показывалось уже графически и все действия были видны в реальном времени. Игра выходила для компьютера Apple II и ознакомиться с ней можно через эмулятор. Вообще, сражения множества AI стали популярной темой таких игр.
Еще одной игрой про роботов, был уж к ним такой интерес, стала Robot Odyssey, уже в 84-м. И это уже явное развитие, ведь помимо собственно проектирования и программирования появилась также и сюжетная часть. В игре есть персонаж — мальчик, которой провалился в подземный город роботов. И для возвращения домой ему нужно использовать роботов, которых он находит по пути, перепрограммируя их под новые задачи.
И вот здесь начинается самое интересное: игра предлагает разрабатывать не просто софт, а по факту создавать новое железо, чипы из примитивных элементов, ковыряя логику роботов. В итоге сложность и проработанность этого процесса, а также его сходство с реальностью повергла в шок не только игроков, но и специалистов настоящего времени. Robot Odyssey теперь считается «самой сложной игрой всех времён».
В плюс создателям стоит отметить, что в ней есть встроенный подробный tutorial — большая редкость в те годы. И авторы игры не питали иллюзий по поводу сложности, и прошедшим её вручался именной сертификат.
Но игровой процесс не обязательно должен быть столь жёстко-беспощадным и примером тому может быть игра Tower of Babel, трёхмерный паззл 89-го года для Atari ST. Здесь мы управляем одним из трёх роботов, которые имеют уникальные способности, но программирование не нужно осуществлять постоянно, а лишь когда в этом всплывает необходимость, и нужно координировать их действия, когда выполнить задачу одному не под силу. Не правда ли, напоминает о The Lost Vikings?
Алгоритмические игры были и в России. Например, увлекательная игра Штурман для компьютера MSX. Этот компьютер использовался в советских и российских школах со второй половины 80-х. Сама игра появилась в 89-м или 90-м году. Она носила образовательный характер и в ней надо было прокладывать маршрут для навигационного компьютера планетарного корабля, с тем чтобы поселения колонистов получали нужные им грузы. «Язык» написания алгоритма был довольно простым — чтобы не переутомлять учащихся.
Другая отечественная игра называлась Snake Battle и была сделана компанией Gamos, известной прежде всего по Цветным Линиям и квесте о Братьях Пилотах. Но именно эта игра была рассчитана явно на иную аудиторию. Основной принцип взят из классических игр а-ля Змейка, т.е. по экрану ползает змея, ест точки и становится длиннее и так далее. Но здесь в качестве пищи должны использоваться другие змеи, управляемые, как вы догадываетесь, искусственным интеллектом. Несмотря на то, что игра получилась оригинальной и в чём-то новаторской, особого распространения, признания и денег своим создателем не принесла.
И как ни странно, столь сложный и специфический жанр добрался и до приставок. Серия Carnage Heart впервые появилась на Playstation в 95-м году и с тех пор вышло несколько продолжений, в том числе на PSP. Удивительный факт, учитывая что игра действительно непростая. В ней речь идёт тоже о поединках металлических истуканов, программируемых нами. Для написания инструкций используются графические схемы, из довольно обширного списка, почти каждую из которых можно как-то настроить. Всё усложнялось тем, что встроенного руководства здесь нет, а видео с обучением находилось на втором диске.
И напоследок TIS-100 – одна из самых последних игр на эту тему, и далеко не самая простая. В центре сюжета — таинственный компьютер, который пылился в гараже у вашего дяди. Увы, дядя скоропостижно скончался и TIS-100 достаётся вам. Сведений об этой модели найти трудно, некоторые блоки памяти закрыты для доступа, хотя дядя долго бился над тем, чтобы разгадать тайну его происхождения и назначения. Ну а сейчас этот динозавр даже не хочет загружаться — не может выполнить простейший тест диагностики.
Если описывать игру простыми словами — то это тоже паззл. Здесь процесс разбит на отдельные задачки, и их необязательно выполнять в прямой последовательности. После решения, как и во многих паззлах вам покажут ваш рейтинг, причём приведя статистику других игроков и оценив вашу сообразительность.
Но сравнить TIS-100 с какой-нибудь Cut the Rope было бы не совсем корректно. Ведь это по факту симулятор транспьютеро-подобной системы, которые были популярны в 80-е. Система программируется на упрощенном языке ассемблера. Каждый процессор, или узел, а их здесь 12, имеет ограничение на количество строк программы. Вместе с тем, количество узлов даёт большую свободу в способах решения заданий. Задачи довольно разнообразны, но обычно они имеют следующий вид: взять исходные данные, провести над ними какие-то действия (сортировку, арифметические операции или что-то другое) и вывести их в нужный порт.
С одной стороны такие манипуляции легко проделать на многих языках программирования, но это вам не BASIC, и поэтому придётся искать решения с точки зрения таинственной архитектуры и списка доступных команд.
И на этом мы закончим экскурс в мир игр. Если вам понравилось, то посмотрите и наши видео на эту тему — там есть игры и факты, не затронутые в этой статье.
Многих из нас в профессию программиста привела детская любовь к играм и головоломкам. Поэтому нет ничего удивительного, что едва получив свои первые знания, мы начинаем придумывать им развлекательное применение. Вот 5 игр, которые помогут вам пройти путь от новичка до зрелого программиста (и будущего создателя игровых бестселлеров).
Hack'n'Slash
Порой игроки хакают игры, чтобы упростить себе прохождение. Но что насчёт игры, в которой хаки необходимы для прохождения? Hack'n'Slash начинается с того, что главный герой (сходство которого с Линком из Legend of Zelda, разумеется, совершенно случайно) находит странный меч, оканчивающийся USB-штекером. Тыкая этим мечом в разнообразные игровые объекты, он может изменять их свойства — например, самое банальное, установить свойству «здоровье» монстра значение «0».
В дальнейшем герой находит новые артефакты, делающие другие полезные вещи — например, показывающие collision boxes всех объектов на экране. А для победы над финальным боссом необходимо модифицировать скрипты самой игры, написанные, кстати, на языке Lua. Честно говоря, графика меня немного вымораживает, но с геймплейной точки зрения игра весьма любопытна.
И раз уж мы заговорили о графике…
Арканоид (Бильярд)
Суть игры: взаимодействие большого числа объектов, каждое из которых обладает своими уникальными физическими и инерционными характеристиками.
Чем полезно: качественная работа с графическими объектами, которая должна учитывать точную форму, траекторию движения, скорость, массу и т. д. Главная проблема - расчётное значение редко бывает целым, в отличии от количества пикселов, поэтому необходимо оперировать погрешностями и создавать модели поведения, включающие несколько факторов.
Как усложнить: просто попробуйте сделать арканоид с классическими бонусами и изменением скорости полёта шарика. Бильярд сделать русским, а также учитывать взаимодействие шаров с покрытием.
Интересна веб-разработка? Приглашаем вас на бесплатный интенсив по веб-разработке для чайников!
Elevator saga
Простая минималистичная игра про лифт, которая может увлечь вас очень надолго. Знание языков программирования здесь неважно, синтаксис прост в освоении (не поймёте – направляйтесь в раздел «Документация»). Главную роль здесь играет умение анализировать входящую информацию, предусматривать ход процессов и на основании этого строить алгоритмы.
Преимущества: простота, встроенный нормальный редактор, единая идея, удобная визуализация.
Недостатки: однообразие.
Крестики-нолики
Суть игры: перед вами минимальное игровое поле 3 х 3 клетки. Каждому игроку присваивается своя фигура (крестик или нолик), после чего они поочередно заполняют ими поле. Первый ход за крестиками. Побеждает тот, кто соберёт 3 своих фигуры в ряд (по горизонтали, вертикали или диагонали).
Чем полезно: Переход от текстовых приложений к графическому интерфейсу, хоть и на достаточно примитивном уровне. С точки зрения самого кода, в простейшем случае создатель игры потратит уйму времени на описание всевозможных однотипных ситуаций, просто набив руку. Но есть и сложный путь создания функционального кода.
Как усложнить: увеличение размеров поля, регулировка сложности.
Human Resource Machine
А вот ещё один ассемблер. Обманчиво простой, с мультяшной графикой и «программированием мышкой». Наверное, не один ребёнок, получив в подарок «детскую развивающую» игру, в ярости сломал об колено клавиатуру, пытаясь оптимизировать решение какой-нибудь дебильно простой задачи, чтобы оно выполнялось на два такта быстрее.
На самом деле, если ребёнок не перфекционист, нацеленный на стопроцентное прохождание, то это действительно будет для него хорошей обучающей игрой. А, и ещё, если кому вдруг интересно, создатели Human Resource Machine — это те, кто сделал World of Goo.
Кстати, раз уж мы заговорили про обучающие игры…
После таких низкоуровневых вещей, как ассемблер, почему бы не… опуститься на уровень ниже? MHRD — это игра про логические элементы, в которой игрок своими, можно сказать, руками, собирает из голых NAND полноценный процессор. Причём игра подводит его к этому плавно, без резких скачков сложности. На мой взгляд, прохождение этой игры нужно давать в качестве лабораторной работы к курсам типа «Архитектура компьютера».
«Сюжет» игры незамысловат, как в старом добром немецком кино: игрока нанимает на работу корпорация MicroHard, которая хочет завоевать рынок процессоров, или что-то в этом роде. Соответственно, пока она будет завоёвывать рынок, игрок должен собрать сам процессор. Делается это с помощью своеобразного «языке программирования», на котором описываются элементы и их связи. Однажды собранный элемент можно переиспользовать в дальнейших схемах, не описывая его каждый раз заново.
К сожалению, игре не хватило совсем немного, чтобы стать истинным бриллиантом. «IDE» подтормаживает, нет возможности интерактивно поиграть с собранными элементами. Игра не великолепна, но весьма хороша.
CSSBattle
Если вы работаете с веб-вёрсткой, обязательно проверьте свои силы в CSSBattle. Суть предельно проста. Вам даётся несколько изображений, которые нужно воспроизвести с помощью HTML/CSS. Чем меньше вы затратите на это символов и чем ближе будет ваша картинка к исходной – тем больше получите очков в общий зачёт. А там уже слава, деньги… или просто первое место в правом столбце экрана.
Преимущества: не нужна регистрация, простой и понятный интерфейс, бесплатность.
Недостатки: слишком сложно для новичков, узкая специализация.
CodeMonkey
Наверняка вы знакомы с продуктом MIT Scratch — самым популярным инструментом для обучения детей программированию. Игра CodeMonkey переняла концепцию подачи кода при помощи забавной визуализации — только без разноцветных блоков и с конкретными заданиями. К вашим услугам множество игр разной степени сложности, построенных вокруг приключений обезьянки. Выполнять задания будет интересно и детям, и взрослым, но разработчики ориентируется на разработчиков 4–6 лет.
Преимущества: привлекательная визуализация, разнообразные задания, несколько вариантов решений, возможности кастомизации для учителей и родителей, поддержка нескольких платформ.
Недостатки: ограниченная функциональность в бесплатном режиме.
Текстовый квест
Суть игры: строгих принципов нет, это может быть как линейный сюжет, требующий минимальных действий от игрока, так и полностью интерактивная забава, где количество возможных исходов исчисляется десятками. Классический пример первого типа - телевизионное шоу “Кто хочет стать миллионером?”, второго типа - настольная игра “Dungeons & Dragons”.
Чем полезно: плох тот программист, который никогда не пытался создать некое подобие ИИ. Текстовые квесты как нельзя лучше для этого подходят, ведь здесь придётся просчитывать вероятности, оперировать данными и прогнозировать дальнейшие действия. Можно обойтись и без этого, но в любом случае придётся научиться работать с классами, объектами и модулями.
Как усложнить: нет ничего более сложного в ИИ, чем возможность импровизировать.
Silent Teacher
«Тихий учитель» набрасывается на вас сразу, без SMS и регистрации, требуя лишь верные ответы. Абсолютно верные! Игра будет интересна тем, кто уже имеет базовые представления о программировании, знает синтаксис, но ещё допускает много детских ошибок в коде. Более опытным программистам игра, скорее всего, быстро наскучит.
Преимущества: отсутствие лишних манипуляций для начала игры, приятный интерфейс, постепенное наращивание сложности.
Недостатки: отсутствие возможности «промотать» совсем базовые вещи.
Untrusted —or— the Continuing Adventures of Dr. Eval
Раз уж мы заговорили о графике, то у Hack'n'Slash есть брат близнец, который приятнее мне по трём причинам. Во-первых, он бесплатный и опенсорсный. Во-вторых, он в ASCII-графике, что согревает моё сердце как человека, прошедшего оригинальный Dungeon Crawl. И в-третьих, у него под капотом JS, а не Lua — тут, конечно, дело привычки, но первый для меня уже роднее русского, а со вторым я имел дело лишь при написании мелких модов к Don't Starve.
Игровой процесс похож на то, что происходит в самом конце Hack'n'Slash: игрок получает доступ к самому коду игры и может модифицировать отдельные его участки, что необходимо для прохождения. Игра остроумна и прекрасна; единственный недостаток её в том, что она слишком короткая.
Что ж, пожалуй, на этом всё. До встречи в третьей части, ещё через четыре с половиной года.
P.S. Предвижу, что в комментариях упомянут Shenzen IO. Мне известно о её существовании, но, к сожалению, я не успел ещё в неё поиграть, а потому не стал писать о том, чего толком не знаю.
Планируете изучать Java, C++ или Python, но не знаете, с чего начать? А как насчёт игр для программистов?
Хотя традиционно игры ассоциируются с развлечениями, новые тенденции показывают, что геймификация может значительно улучшать скорость усвоения информации. Во многих областях знаний, в том числе и на курсах программирования, появилось множество обучающих игр.
Давайте же узнаем о том, как геймификация помогает нам лучше учиться и какие игры помогут стать программистом!
В буквальном смысле геймификация обозначает привнесение игровых элементов в какую-то деятельность, например, обучение, шоппинг, маркетинг или даже выполнение финансовых операций. Она может быть полной — игра как способ достижения цели, или частичной, когда игровые элементы дополняют другую деятельность.
Яркими примерами геймификации являются следующие приложения:
- Приложение для изучения языков Duolingo
- Рекламный продукт My Starbucks Rewards компании Starbucks
- BBVA Game банка BBVA, которая тоже предназначена для рекламы услуг
- Экологическая инициатива Simple Energy
- и множество других
Игра — самый естественный для человека способ обучения, и это подтверждено множеством исследований. Исследования показывают, что игровой учебный процесс демонстрирует лучшие результаты по сравнению с традиционным обучением на основе лекций, потому что именно так мы по своей природе привыкли воспринимать новую информацию. Игры, эксперименты, попытки и провалы в одиночку или вместе с друзьями всегда веселее, чем простое многочасовое чтение книг, кода или формул. Даже когда мы взрослеем, ситуация не меняется.
С другой стороны, чтение и зубрёжка — более привычный подход, который используется в школах, университетах и на работе, сложнее даётся человеческому мозгу. Однако у традиционного подхода есть свои преимущества, и поэтому всегда лучше сочетать лучшее из обеих систем.
Flexbox Froggy
Опять CSS и уже третья игра в подборке, где вы столкнётесь с необходимостью перемещать персонажа элементарными функциями. Игра привлекает по нескольким причинам. Во-первых – минимализм во всём, и при этом интерфейс никак не страдает. Во-вторых, новичкам будет действительно полезно научиться работать с экраном в таком визуальном восприятии. Ну и третье всё необходимое переведено на русский язык.
Преимущества: отсутствие регистрации, подойдёт новичкам в качестве обучающего курса, русификация.
Недостатки: мало уровней и возможностей.
else Heart.Break()
Преимущества: сюжет, анимация, нелинейность, саундтреки, желание переписывать код снова и снова.
Недостатки: стоимость (449 руб.), возможность играть только на PC
Infinifactory
Отдельное удовольствие доставляет сюжет. Да, да, сюжет головоломки про создание конвейеров. Практически производственная драма… в космосе. Главного героя похитили могущественные, но довольно тупые инопланетяне, и теперь он работает для них за еду. Сюжет оказывает влияние на то, как именно называются и выглядят совокупности кубиков на входах и выходах конвейера. Думаю, вы никогда не сумеете изгладить из памяти миссию про изготовление китовых консервов. Ещё можно вспомнить прекрасный цинизм, с которым игра заставляет вас налаживать сборку камер-одиночек, полностью аналогичных той, в которой вы находитесь между миссиями. Впрочем, зачем я это пишу? Вы же наверняка уже бросили читать и пошли устанавливать игру.
Кстати, интересный факт: сходство с Майнкрафтом не случайно. Создатель Infinifactory — также автор старой малоизвестной игры Infiniminer, одним из идейных клонов которой когда-то стал Minecraft.
Быки и коровы
Суть игры: ваш соперник, будь то компьютер или друг, загадывает 4-значное число, состоящее из неповторяющихся цифр. Ваша задача - угадать его за ограниченное число ходов. В качестве подсказок выступают “коровы” (цифра угадана, но её позиция - нет) и “быки” (когда совпадает и цифра и её позиция). То есть если загадано число “1234”, а вы называете “6531”, то результатом будет 1 корова (цифра “1”) и 1 бык (цифра “3”) .
Чем полезно: создание игры не потребует от вас углубленного знания языка, а сам язык может быть практически любой. При этом вам придётся использовать практически все базовые упражнения с циклами и операторами, да и на выходе получится весьма интересная игра.
Как усложнить: сохранение результатов, круговое соревнование на несколько игроков, режим турнира, игра по сети.
10 лучших игр для программистов, улучшающих навыки разработки/программирования
Итак, если вы хотите совершить первые шаги в программировании самым простым и интересным способом, то какую игру выбрать или с чего начать? Давайте перечислим самые лучшие игры!
CodeGym — это интерактивная платформа обучения Java, содержащая более 600 мини-лекций и 1200 задач, помогающих учиться с нуля. Нужно учесть, что Java — один из самых популярных языков программирования для начинающих, поэтому CodeGym может стать отличным началом вашей карьеры.
Языки программирования: Java
Плюсы:
- Практичные и применимые упражнения
- Удобное сочетание теории и практики
- Дружелюбный стиль обучения, который легко понять
- Простой интерфейс
- Идеален для начинающих
Code Monkey — популярная интерактивная игра-головоломка, помогающая интуитивно обучаться программированию. Она даёт базовые знания по практике кодинга, а также реальным языкам программирования, и имеет уровни с повышающейся сложностью.
Языки программирования: CoffeeScript (схож с JavaScript) и Python
Плюсы:
- Очень легко начинать и понимать основы
- Доступно для детей (от 7 лет)
- Локализация на 20 языков
- Иногда не хватает теории
- Только 90 уроков
Плюсы:
- Этот способ обучения помогает находить по-настоящему изящные решения и использовать их в своей будущей работе
- У Code Hunt есть большое дружное сообщество
- Слишком практично (не хватает теории)
- Нельзя пропускать уровни
CheckIO — это стратегическая игра, обучающая JavaScript. Это веб-игра, позволяющая не только обучаться самому, но и использовать решения других людей для улучшения своего счёта.
Empire of Code — это новый проект CheckIO. Это игра в построение мира, позволяющая защищать свою базу, решая различные типы задач.
Языки программирования: JavaScript и Python
Плюсы:
- Очень увлекательные игры с отличными заданиями
- Хороший инструмент для подготовки к собеседованию разработчиков
- Пользователи могут делиться своим опытом решения задач
- Поддержка более 10 языков
- Судя по некоторым отзывам пользователей, медленная
- Навигация не всегда проста
- Прежде чем начинать, лучше выучить основы
CSS Diner — это простая, но забавная игра, помогающая начать освоение селекторов CSS.
Языки: CSS
Плюсы:
- Очень легко начинать и учиться
- Простой интерфейс, который быстро осваиваешь
- Это простая игра, помогающая изучить только некоторые аспекты CSS
CodinGame — это набор игр, головоломок и задач, помогающий начинающим, опытным и даже профессиональным программистам оттачивать свои навыки самым увлекательным образом, а также получать признание в сообществе.
Языки программирования: больше десятка
Плюсы:
- Различные типы задач и заданий
- Возможность играть с друзьями
- Отличное поддерживающее сообщество с опытными наставниками
- Используется компаниями для поиска и рекрутинга разработчиков
- Не учит добротным навыкам
- Не для начинающих (требуются как минимум базовые знания)
Robocode имеет простой интерфейс, позволяющий создавать собственные танки-роботы и участвовать в боях с другими игроками в реальном времени.
Плюсы:
- Увлекательный и расслабляющий способ обучения программированию и оттачивания своих навыков
- Возможность играть с друзьями
- Довольно примитивная (доступны только танковые бои)
- Не обучает добротным навыкам
CodeWars позволяет начать с нуля и обучиться до уровня опытного программиста. Можно улучшать свои навыки и достигать более высоких уровней. Игра имитирует японские боевые искусства под названием «ката», вам нужно будет писать код для преобразования определённых входящих данных в выходные данные. Лучше всего в CodeWars то, что она награждает ваши решения в зависимости от уровня их оптимизации, так как каждая задача имеет несколько возможных решений. Чем выше уровень сложности, тем выше ваш ранг.
Языки программирования: 29 основных и 26 дополнительных языков
Плюсы:
- Адаптируется к вашему уровню и нужному языку программирования
- Увлекательные задания и система рангов
- Возможность поделиться своим решением с другими и сравнить его для улучшения своих навыков
- Используется компаниями для найма разработчиков
- Не учит добротным навыкам
- Не для начинающих (нужны хотя бы базовые навыки)
Cyber Dojo похож на реальный додзё, в котором вы практикуете и совершенствуете свои навыки. Это веб-приложение позволяет программистам и командам разработчиков обдумывать используемые в кодинге практики и достигать высоких уровней навыка, а также повышать навыки кодинга.
Языки программирования: более 35 языков программирования
Плюсы:
- Очень простой интерфейс
- Поддерживает большое количество языков программирования
- Не обучает добротным навыкам
- Не для начинающих (нужны хотя бы базовые навыки)
- Ограниченное количество задач
На правах рекламы
У нас вы можете заказать облачный сервер и использовать его для обучения. Скорость интернет-канала 500 Мегабит, автоматическая установка большого количества операционных систем. Лучше один раз попробовать ;)
Вебинары, лекции и книги — это уже классические, зарекомендовавшие себя способы изучать программирование. Но их объединяет одна проблема: непросто удержать внимание ученика в течение продолжительного времени. Есть другой формат обучения, интерактивный и более увлекательный — это игры для программистов. Наиболее популярными считаются CodeCombat, CodeWars, Robocode, Vim Adventures и CodingGame. Если вы с ними незнакомы – заходите по ссылкам, с пользой потратите много часов. А в этом посте мы копнём глубже и подкинем вам 11 других, менее известных, но не менее интересных представителей «жанра».
Edabit
Edabit — огромный сборник стандартных заданий разной сложности, которые вы можете встретить в книгах по программированию. Выполняя их, вы получаете очки опыта, соревнуетесь с другими посетителями и усваиваете новую информацию.
Преимущества: большое число языков, множество заданий, собственный редактор кода, справочная информация, возможность подбора уровня сложности, имеются решения.
Недостатки: однообразие, которое разбавляется лишь режимом «Соревнование».
TIS-100
Ещё одна похожая игра от Zachtronics с аналогичными преимуществами и недостатками, но посвящённая одному лишь программированию. Подробнее останавливаться смысла нет, но отметим, что цена вдвое ниже.
Пятнашки (Змейка)
Суть игры: Пятнашки (она же “Игры в 15”) - головоломка, цель которой за минимальное количество ходов упорядочить костяшки с нанесёнными числами от 1 до 15, расположенные на игровом поле 4 х 4 с одной свободной ячейкой. Собственно упорядочение должно происходить перемещением костяшек на соседнюю пустую ячейку.
Змейка - игра, в которой игровой объект (собственно, змейка), перемещаясь по игровому полю в вертикальном и горизонтальном направлениях, увеличивает свою длину после столкновения с единичными объектами (едой). Суть игры заключается в необходимости избегать препятствия, границы игрового поля, а также собственный “хвост”.
Чем полезно: переход на новый уровень в графической составляющей, при этом алгоритмы действий и их анализ остаются относительно простыми.
Как усложнить: манипуляции с игровым полем и временем.
Infinifactory
Отдельное удовольствие доставляет сюжет. Да, да, сюжет головоломки про создание конвейеров. Практически производственная драма… в космосе. Главного героя похитили могущественные, но довольно тупые инопланетяне, и теперь он работает для них за еду. Сюжет оказывает влияние на то, как именно называются и выглядят совокупности кубиков на входах и выходах конвейера. Думаю, вы никогда не сумеете изгладить из памяти миссию про изготовление китовых консервов. Ещё можно вспомнить прекрасный цинизм, с которым игра заставляет вас налаживать сборку камер-одиночек, полностью аналогичных той, в которой вы находитесь между миссиями. Впрочем, зачем я это пишу? Вы же наверняка уже бросили читать и пошли устанавливать игру.
Кстати, интересный факт: сходство с Майнкрафтом не случайно. Создатель Infinifactory — также автор старой малоизвестной игры Infiniminer, одним из идейных клонов которой когда-то стал Minecraft.
TIS-100
Игра того же разработчика, о которой на Хабре уже есть отдельная статья, но я всё равно напишу о ней своими словами, потому что я люблю писать, а игра того заслуживает. Если коротко, это симулятор примитивного многопоточного ассемблера, на котором вам по сюжету приходится писать разнообразные хеллоуорлды. Возможности его бедны, а в каждую ноду помещается очень ограниченное число строк, из-за чего у программиста возникают трудности, которые (я надеюсь) вряд ли встретятся в реальной работе. А чтобы жизнь не показалась мёдом, общаются ноды между собой асинхронно. Из этих трудностей рождается суть игры: ни одна нода не может целиком реализовывать сколь-нибудь сложный алгоритм, потому приходится разделять его между нодами, иногда жестоким и противоестественным способом.
Да, и там тоже присутствует сюжет. Сюжет игры про многопоточный ассемблер. Это звучит даже забавнее, чем старая шутка про Tetris: Story Mode. Суть его в том, что главному герою остаётся в наследство винтажный на вид девайс с очень странной архитектурой. Программируя его, герой восстанавливает данные из битых нод и постепенно узнаёт его историю — откуда он взялся, для чего он создан. И надо сказать, это не то знание, знакомство с которым проходит бесследно…
Читайте также: