Ігри для програмістів

Ігри для програмістів (англ. 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].

ЗмаганняРедагувати

Багато ігор з програмування залучають керовані об'єкти, такі як роботи, танки або бактерії, які прагнуть знищити один одного. Такі ігри можна вважати середовищами цифрових організмів[ru], пов'язаних з імітацією штучного життя. Гравцям надаються інструменти для розроблення та тестування своїх програм у межах предметно-орієнтованої мови гри перед подачею програми на центральний сервер. Потім сервер виконує програму в змаганні проти інших і повідомляє результати гравцям, через що вони можуть вносити зміни або вдосконалення в програму. Існують різні турніри та ліги для ігор з програмування, де люди змагаються одне з одним. Зазвичай сценарій оптимізований для спеціальної стратегії. Подібні підходи використовуються для традиційних ігор; Чемпіонат світу з комп'ютерних шахів складається з поєдинків між програмами, написаними для абстрактної стратегічної гри в шахи.

Конкурентне програмування також знайшло свій шлях до різних настільних ігор, таких як 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 — це перша гра, в якій програмісту доводилося керувати роботом.

ПриміткиРедагувати

  1. Sayer, Matt (2016-10-03). Can Videogames Teach You Programming?. Rock, Paper, Shotgun (en-US). Процитовано 2020-06-09. 
  2. Bosch, Synonymous (2018-11-26). The 10 best hacking, coding and computing games. Rock, Paper, Shotgun (en-US). Процитовано 2020-06-09. 
  3. Metz, Cade (2014-07-24). The 75-Year Saga Behind a Game That Teaches Preschoolers to Code. Wired. ISSN 1059-1028. Процитовано 2020-06-09. 
  4. O'Kelly, Jackie; Gibson, J. Paul (2006-06-26). RoboCode & problem-based learning. ACM SIGCSE Bulletin 38 (3). с. 217. ISSN 0097-8418. doi:10.1145/1140123.1140182. Процитовано 2020-06-09. 
  5. Finley, Klint (2014-08-18). New Minecraft Mod Teaches You Code as You Play. Wired. ISSN 1059-1028. Процитовано 2020-06-09. 
  6. Vincent, Alice (2011-08-19). Codecademy 'gamifies' the process of learning Javascript. Wired UK. ISSN 1357-0978. Процитовано 2020-06-09. 

ПосиланняРедагувати