This article has been localized into Ukrainian by the community.
In this article series, we're building a complete Snake game from scratch. It makes sense to start with the Introduction and then work your way through the articles one by one, to get the full understanding.
If you want to get the complete source code for the game at once, to get started modifying and learning from it right now, consider downloading all our samples!
Вступ
Короткий виклад цієї вступної статті: Ми реалізуємо класичну гру «Змійка» у WPF, і кінцевий результат виглядатиме приблизно так:
Створення ігор часто є причиною, чому багато людей, особливо молоді, прагнуть вивчати програмування. Але зазвичай питання полягає в наступному: як почати і що мені потрібно? Що ж, вам потрібна мова програмування, така як C#, C++ або будь-яка інша популярна мова, і якщо ви вільно володієте улюбленою мовою, вам насправді нічого більше не потрібно: просто почніть знизу, додаючи пікселі на екран, і в якийсь момент у вас може бути робоча гра.
Однак більшість людей віддадуть перевагу невеликій допомозі з низькорівневими речами. Навіщо додавати пікселі на екран вручну, якщо є бібліотека або фреймворк, які можуть зробити це за вас, щоб ви могли зосередитися на створенні цікавої гри? Існує багато фреймворків, які допоможуть вам зробити це, і власне, один з них — фреймворк WPF.
Звичайно, WPF не є найочевиднішим вибором, коли ви хочете створювати ігри — це безумовно фреймворк, який здебільшого зосереджений на створенні користувацьких інтерфейсів для бізнес-орієнтованих програм. Але все ж, у фреймворку WPF є багато елементів, які можна використовувати для створення гри, і, можливо, не менш важливі: ви отримуєте всі механізми для малювання та керування вікном у Windows.
Отже, якщо ви хочете створити просту гру, WPF може бути непоганим вибором. Принаймні, він буде чудовою допомогою для всіх найбазовіших аспектів, таких як створення вікна, малювання простої області для гри тощо. Якщо ви хочете додати такі речі, як просунута 3D-графіка та швидкорухомі об'єкти, може знадобитися додаткова допомога з іншої бібліотеки/фреймворку, але він чудово підійде для простої гри — наприклад, класичної гри про змійок!
SnakeWPF
Як перевірку концепції, я вирішив створити версію надзвичайно класичної гри "Змійка" на основі WPF. Вона використовуватиме звичайне вікно WPF як ігрову область, а також звичайні елементи керування/фігури WPF для створення фактичного ігрового процесу. Причина, чому я обрав "Змійку", полягає в тому, що її досить легко реалізувати (в коді не так багато логіки), і тому, що її можна реалізувати за допомогою простих геометричних фігур, таких як квадрати та кола, які дуже легко використовувати з фреймворком WPF. А також тому, що це все ще дуже кумедна гра, незважаючи на її спрощений характер!
Якщо ви не знаєте гри «Змійка», можу лише припустити, що у вас ніколи не було мобільного телефону Nokia наприкінці 90-х – на початку 2000-х років. Перша версія «Змійки» була написана та продемонстрована за багато років до цього, але вона стала хітом, коли Nokia вирішила включити власну версію гри у всі свої мобільні телефони.
Ігровий процес настільки ж простий, наскільки й цікавий: Ви рухаєте віртуальну змію в одному напрямку (ліворуч, праворуч, вгору або вниз) у полюванні на їжу (іноді яблуко). Коли ваша змія влучає в яблуко, воно з'їдається, ваша змія росте, і на екрані з'являється нове яблуко. Якщо ви влучаєте в стіни або власний зміїний хвіст, гра закінчується, і вам доведеться починати все спочатку. Чим більше яблук ви з'їсте, тим вищий бал отримаєте, але тим складніше буде не влучати у власний хвіст.
Існує БАГАТО варіацій ігрового процесу – наприклад, швидкість, з якою рухається ваша змія, часто збільшуватиметься щоразу, коли ви з'їдаєте яблуко, роблячи гру все складнішою і складнішою, але не всі реалізації Змії дозволяють це. Ще однією варіацією є стіни – деякі реалізації дозволять вам пройти крізь стіну та вийти на протилежному боці, тоді як інші реалізації призведуть до того, що гра закінчиться, як тільки ви вдаритеся об стіну.
У нашому SnakeWPF стіни тверді (змія гине, якщо вдариться об них), а швидкість зростатиме експоненціально з кожним з'їденим вами яблуком, до певної точки.
Короткий зміст
У наступних кількох статтях ми реалізуємо гарну версію класичної гри «Змійка» за допомогою фреймворку WPF. У наступній статті ми почнемо з передісторії, і врешті-решт у нас буде наша перша повнофункціональна гра на базі WPF.
Зверніть увагу, що хоча це Є посібник з WPF, нам знадобиться трохи більше коду C#, ніж зазвичай, для реалізації логіки гри тощо. Я спробую пояснити більшу частину коду в міру просування, але якщо вам потрібно трохи більше знань про C#, не забувайте, що в нашій мережі є гарний, повний посібник з C#!