Розробка гри на C# (Mini RPG) Частина 2 з 5

Модель налаштувань

Загальна схема складання з налаштуваннями показана на малюнку нижче:

частина

Що ми хочемо отримати від налаштувань гри? По-перше, щоб їх було зручно зберігати. По-друге, щоб з ними було зручно взаємодіяти із програмного коду. По-третє, щоб шар доступу до даних не був еквівалентним шару моделі даних. Це означає, що є щось, що читає налаштування та щось, що їх представляє. Спочатку визначимо моделі даних. Усі моделі розташовані у папці Models.

Формула перемоги персонажа над монстром має враховувати силу персонажа. До неї можна додати й інші параметри, також можна додати «шанс критичної шкоди», але не сьогодні.

Також у налаштуваннях необхідно визначити значення при перемозі та поразці битви з монстром. У результаті змінюватимуться значення монет та здоров'я персонажа. Почнемо потихеньку реалізовувати моделі.

І загальні налаштування битви.

Стартові налаштування гравця.

Особливо працюють магазини у грі. Що таке магазин? Це механізм, який за гроші реалізує певні ефекти до персонажа. Значення ефектів можуть лежати у будь-якому проміжку. Тоді Налаштування абстрактного магазину визначаються так:

Усього в грі існує 3 магазини. Це магазин зброї, магазин броні та магазин здоров'я. У грі, що розробляється, існує по одному екземпляру таких магазинів, але в теорії їх може бути нескінченно, проте абстрактний клас налаштувань магазину може бути і таким.

І головний клас налаштувань

Зберігання налаштувань

Зберігати налаштування ми будемо у файлі app.config виконуваного файлу. Це той свідомий крок в архітектурі, який робимо свідомо. У реальному додатку такі настройки не повинні бути у гравця, а повинні враховуватись насервер. Зберігати налаштування будемо у структурованому вигляді, використовуючи ConfigurationSection . Весь код класів не наводитиму, покажу тільки головний клас.

Читання налаштувань

Установки можуть бути розташовані в різних місцях. І тут нам допоможе інверсія управління. Визначимо інтерфейс

І реалізуємо його.

У цьому вся методі використовується один чарівник, метод Map . Використовуватимемо патерн Data Mapper. І пакет із nuget AutoMapper.

На цьому ми повністю розглянули складання з налаштуваннями гри. Визначили всі можливі налаштування та наступного разу перейдемо до більш змістовної частини реалізації гри.