Ігри для програмістів (англ. Programming game) — відеогри, які містять елементи програмування, дозволяючи гравцеві керувати автономними частинами у грі за допомогою предметно-орієнтованої мови програмування (часто поданої як візуальна мова[en], щоб спростити програмувальну метафору). Такі ігри поділяють на однокористувацькі, де програмувальна частина є складником або і всією головоломкою та багатокористувацькі, де програма гравця змагається з іншими.
Часто програмування є частиною головоломок, вимагаючи від гравця досягти певного результату, коли програма почне працювати. Прикладом є SpaceChem[ru], де гравець використовує візуальну мову, щоб керувати двома візуальними маніпуляторами, які розбирають та збирають хімічні молекули. У схожих іграх гравці можуть випробовувати та зневаджувати свої програми скільки потрібно, доки не отримають відповідь, що спрацює. Багато ігор заохочують оптимізувати розв’язок. Серед таких ігор відомі Human Resource Machine[en], TIS-100[en]. [1]
Інші ігри містять елементи програмування як частину задачі у більшій грі. Серед таких ігор Hack 'n' Slash[en], Transistor[en], else Heart.Break(), Glitchspace, and Pony Island[en].[2]
Інакший підхід, який використовується в деяких графічних іграх з елементами програмування, полягає в тому, щоб надати гравцеві інтерфейс командного рядка для видачі наказів через предметно-орієнтовану мову, що направляє об'єкти в грі, дозволяючи гравцеві перезапускати команди, коли ситуація змінюється, а не створювати програму наперед. Такими є Quadrilateral Cowboy[en], Duskers[en], Hackmud[en].
Багато ігор з програмування залучають керовані об'єкти, такі як роботи, танки або бактерії, які прагнуть знищити один одного. Такі ігри можна вважати середовищами цифрових організмів, пов'язаних з імітацією штучного життя. Гравцям надаються інструменти для розроблення та тестування своїх програм у межах предметно-орієнтованої мови гри перед подачею програми на центральний сервер. Потім сервер виконує програму в змаганні проти інших і повідомляє результати гравцям, через що вони можуть вносити зміни або вдосконалення в програму. Існують різні турніри та ліги для ігор з програмування, де люди змагаються одне з одним. Зазвичай сценарій оптимізований для спеціальної стратегії. Подібні підходи використовуються для традиційних ігор; Чемпіонат світу з комп'ютерних шахів складається з поєдинків між програмами, написаними для абстрактної стратегічної гри в шахи.
Конкурентне програмування також знайшло свій шлях до різних настільних ігор, таких як RoboRally[en] або Robot Turtles, як правило, програма стає підготованою колодою гральних карт, що діють одна за одною для виконання цього коду[3].
Дослідники представили RoboCode як основу "автентичного навчання" програмуванню[4].
Ігри з відкритим світом, які містять можливість для гравців створювати середовища з масиву будівельних блоків, часто використовуються просунутими гравцями для побудови логічних схем та досконаліших програм з фундаментальних блоків. Minecraft - один із таких прикладів, бо хоча гра надає обмежений набір блоків, що імітують комутатори та електричні кола, користувачі створили базові функціональні комп'ютери у віртуальному світі, а щонайменше одна модифікація спрямована на те, щоб навчити дітей програмувати на віртуальному комп'ютері спрощеною мовою[5].
Кілька сайтів, наприклад Codecademy, допомагають навчати справжнім мовам програмування через гейміфікацію, де принципи відеоігор використовуються для мотивації користувача[6].
Для програмування коду таких ігор можуть використовуватися різні мови програмування наприклад різновиди асемблеру або мов високого рівня. Також часто використовуються інтерпретовані мови програмування.
У 1961 році у Bell Labs була розроблена гра Дарвін. На початку 1980-х років під впливом цієї гри була розроблена гра «Бій у пам'яті» (Core War).
У 1970 році пройшов перший шаховий турнір серед ЕОМ.
У 1981 році компанія MUSE Software випустила гру під назвою Robot War – саме це була перша гра, в якій програмісту доводилось керувати роботом. Гравцю дозволялося створити код для управління роботом за допомогою спеціальної мови програмування з обмеженням у 256 рядків.
Також ранніми прикладами жанру є System 15000[en] та Hacker[en].
У 1985 році була розроблена гра C Robots — це перша гра, в якій програмісту доводилося керувати роботом.