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

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

Примітки

[ред. | ред. код]
  1. Sayer, Matt (3 жовтня 2016). Can Videogames Teach You Programming?. Rock, Paper, Shotgun (амер.). Архів оригіналу за 9 жовтня 2016. Процитовано 9 червня 2020.
  2. Bosch, Synonymous (26 листопада 2018). The 10 best hacking, coding and computing games. Rock, Paper, Shotgun (амер.). Архів оригіналу за 10 червня 2020. Процитовано 9 червня 2020.
  3. Metz, Cade (24 липня 2014). The 75-Year Saga Behind a Game That Teaches Preschoolers to Code. Wired. ISSN 1059-1028. Архів оригіналу за 5 жовтня 2016. Процитовано 9 червня 2020.
  4. O'Kelly, Jackie; Gibson, J. Paul (26 червня 2006). RoboCode & problem-based learning. ACM SIGCSE Bulletin. Т. 38, № 3. с. 217. doi:10.1145/1140123.1140182. ISSN 0097-8418. Процитовано 9 червня 2020.
  5. Finley, Klint (18 серпня 2014). New Minecraft Mod Teaches You Code as You Play. Wired. ISSN 1059-1028. Архів оригіналу за 16 листопада 2018. Процитовано 9 червня 2020.
  6. Vincent, Alice (19 серпня 2011). Codecademy 'gamifies' the process of learning Javascript. Wired UK. ISSN 1357-0978. Архів оригіналу за 20 січня 2021. Процитовано 9 червня 2020.

Посилання

[ред. | ред. код]