пятница, июля 24, 2009

Игры для программистов

Update от 10 Сент 2015 г: Более свежие посты на эту тему:  #1#2 и #3.

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

Список таких игр с кратким обзором можно найти на хабрахабре.

Самые известные:

  • Robocode - соревнования между танками-роботами, алгоритм нужно писать на Java (пытаются написать C# клон игры - http://www.pureai.com/TankAI/).
  • Google AI Challenge - создание программы по контролю над колонией муравьев, сражающихся с колониями муравьев других игроков. Программу можно писать на куче реальных языков программирования.
  • GalaxyFx:Старатели - космические зонды должны собирать ресурсы. Игра сделана в Sun Microsystem, писать нужно на JavaFX Script. Можно участвовать в соревновании и выиграть призы от компании - главный приз ноутбук.
  • Terrarium - создать живое существо и победить в борьбе за существование. Писать надо на C# (.Net 2.0)
  • Breve - моделирование децентрализованных систем и искуственной жизни. Написано на Python, алроритмы нужно писать на нём же или на собственном языке.
  • HabraWars - сражение роботов, писать надо на JavaScript.
  • web-worker-wars - еще одно сражение ботов написанных на JavaScript.

Это все open source по большей части, так что если надоест играть, то можно и в самих проектах поучаствовать.
Есть куча подобных игр, использующих свои собственные языки программирования. С точки зрения обучения программированию это несколько более запутанный способ, чем писать на реальном языке, но в принципе тоже полезно. В конце концов когда я в ВУЗе учился, за 5 лет нас заставили попробовать писать примерно на 10 языках программирования, включая всякую экзотику, реально я из всего этого только C/C++ и Perl сейчас использую.
  • A.I. Wars - программирование роботов-жуков
  • Colobot, Ceebot - роботы, осваивающие другую планету. Язык программирования Cbot - смесь C#, C++ и Java.
  • DarwinBots - программирование колонии микробов
  • Infon Battle Arena - программирование жучков на языке Lua.
Полный (наверное) список подобных игр можно увидеть на DMOZ.

P.S. Еще одна возможность что-то запрограммировать в игре, которая приходит мне в голову - программирование скриптов в R3: Reunion. Это большая игра, посвященная космосу и разработчики оставили для всех желающих возможность перепрограммировать всевозможные скрипты в ней, подробнее можно ознакомиться тут - Космическое программирование.