Рисунок 1.2 – Модель взаємодії гравця з системою під час гри
Гравець обирає тип гри, у який він хоче грати. Це може буди гра для одного або двох гравців. Після цього завантажується гральній рівень, на якому зверху знаходяться блоки які він має розбити, щоб перейти на наступний рівень, знизу зображення битка, яку можна переміщувати по горизонталі та відбивати кульку, якщо ігрок не встиг відбити, то у нього стає на одне життя менше. Коли кількість життів закінчується – закінчується гра. При грі у двох у кожного гравця є своя битка, яку він може переміщувати у своїй частині екрану, а далі все теж саме, як і при грі одного гравця.
2. Постановка задачі
Метою курсового проекту є реалізація гри «Арканоід» на основі XNA Framework, що буде виконувати такий список функцій:
а) Функціонування та відображення меню. Переключення між пунктами меню та виділення поточного пункту.
б) Читання з файлу розташування блоків та особливостей, які має кожний блок, такі як колір, кількість зіткнень із кулькою, щоб розбився блок або щоб блок зовсім не можливо було розбити.
в) Створення грального рівня. Відображення блоків на полі.
г) Пересування бити по полю. Функція дозволяє пересувати вліво або вправо биту у грі.
д) Функції кульки. Функція обробки зіткнень з іншими об’єктами, функція пересування по гральному полю з ладанним прискоренням, зміна напрямку кулі при зіткнені із межами вікна та іншими об’єктами.
е) Відображення усіх об’єктів на полі. У верхній частині вікна виводиться статистика про стан гри, в нижній частині відображається бита гравця та кулька, яка переміщюється по усьому просторі.
є) Гра у двох. Функція створення додаткової бити на ігровому полі, з тими ж особливостями, що і першої, для надання можливості одночасної гри двох гравців в одному вікні.
ж) Реалізація функцій для ведення статистики. Функцію підрахунку кількості балів гравця, яка обчислює кількість балів, яку отримує він за розбиті блоки. Функція обліку життів, вона відповідає за об’єм життів та якщо вони закінчились, гра теж закінчується.
з) Звукові ефекти. Програвання звуків у грі, коли кулька зіткнеться із одним з блоків.
і) Надання можливості користувачу зберегти поточний стан гри, тобто зберегти гри, для того щоб при наступній загрузці гри гравець мав можливість продовжити гру, а не починав все спочатку.
к) Реалізація функцій для роботи з призначеними для користувача настройками для завдання розміру екрана, переключенням у повноекранний режим і назад у віконний, та інші.
3. Опис концептуальної моделі
UML - моделювання – досить важливий етап в проектуванні програми, що зображає сучасні тенденції в тій предметній галузі, яка досліджується в даному курсовому проекті, а саме в сфері IT- технологій, що з ним пов’язаний.
Вище приведена діаграма послідовностей для прецеденту «Запуск гри» (див рис. 3.1). Діаграма послідовностей дозволяє досить детально описати внутрішні процеси , які виникають під час виконання прецеденту. Діаграма містить ось часу, що спрямована зверху вниз; всіх виконавців; повідомлення або запити між виконавцями; посилання на інші прецеденти.
Рисунок 3.1 – Діаграма послідовностей для прецеденту «Запуск гри»
Діаграма в UML - це графічне представлення набору елементів, що замальовується найчастіше у вигляді зв'язаного графа з вершинами і ребрами. Діаграми малюють для візуалізації. Основна мета діаграм - візуалізація системи, що розробляється, з різних точок зору. Діаграма - в найзагальнішому сенсі деякий зріз системи. Зазвичай, за винятком найпростіших моделей, діаграми дають згорнуте представлення елементів, з яких складається система, що розробляється.
Використання UML не обмежується моделюванням програмного забезпечення. Його також використовують для моделювання бізнес-процесів, системного проектування і відображення організаційних структур.
UML дозволяє також розробникам програмного забезпечення досягти угоди в графічних позначення для представлення загальних понять (таких як клас, компонент, узагальнення (generalization), об'єднання (aggregation) і поведінка) і більше сконцентруватися на проектуванні та архітектурі.
Далі наведена UML – діаграма класів, яка зображує об’єктну моделі комп’ютерної гри, яка реалізована в даному курсовому проекті. Вона описує структуру системи, показуючи її класи, їх атрибути і оператори, а також взаємозв’язки між цими класами.
Взаємозв'язок - це особливий тип логічних відносин між сутностями, показаних на діаграмах класів та об'єктів. В UML є декілька типів взаємозв’язків між класами, наприклад: асоціація, агрегація, композиція, узагальнення та залежність
Далі розглянемо об’єктну модель (рис. 3.3). На якій відображені класи гри та їх атрибути, методи і зв’язки між ними.
Рисунок 3.2 – Об’єктна модель системи
Система складається з таких класів:
1 GameObject - абстрактний клас-предок для всіх об’єктів, які відображаються на екрані, таких як Ball, Paddle, Block, які є основними об’єктами у грі;
Атрибути класу:
Sprite - зображення об’єкту;
Width - ширина об’єкта;
Height - висота об’єкта;
Position - позиція об’єкта на ігровому полі;
Bounds - границі об’єкту;
IsAlive - прапорець перевірки чи існує зараз об’єкт, якщо об’єкт не існує, то в подальшому не потрібно його відображати у вікні.
Клас Block атрибут BlockType, який відповідає за тип блоків. Вони можуть бути Easy – легкі, їх можна розбити с першої спроби, Normal – модно розбити з другої спроби, Hard – не можливо розбити.
Клас Ball має атрибут Velocity, він відповідає за прискорення кульки, вектор напрямку його руху.
Та має методи:
Collide() метод, який перевіряє зіткнення блоків із кулькою.
ReflectHorizontal() – метод, змінює рух кулі після зіткнення із горизонтальною стороною.
ReflectVertical() - метод, змінює рух кулі після зіткнення із вертикальною стороною.
Move() – переміщує кулю, змінюючи її координати додаючи поточне прискорення.
Draw() – метод, виконує відображення кулі для нових позицій.
2 Game – клас, який відображає всі об’єкти на екрані;
Initialize() – ініціалізація.
LoadContent() – метод, в якому завантажуються графічні, аудіо об’єкти, які необхідні для гри.
UnloadContent() – метод визволення пам’яті від об’єктів, які завантажувалися при виконанні методу LoadContent().
Draw() – метод, який виконує відображення усіх об’єктів у вікні, які необхідно відобразити у вікні.
Update() – метод оновлення інформації об об’єктах, при зміні їх координат або властивостей.
3 Sound – клас, відповідальний за відтворення звуків та звукових спец ефектів;
Цей клас має один метод Play(), який програє звук удару, при зіткненні кульки з блоком.
4 Level – містить у собі інформацію про поточний рівень, про загальну кількість рівнів та має метод для створення нових рівнів. До його атрибутів входять дані про поточний рівень(CurrentLevel), та загальну кількість рівнів(Count).
Методи класу:
- CreateLevel() – метод, який створює рівень, прочитавши з файлу координати розміщення блоків задає їх позиції на рівні, які необхідно буде відобразити.
- NextLevel() – метод, створює наступний рівень.
- Update() – метод, проводить зміни рівня, при знищенні блоків.
- Draw() – метод, відображення рівня на гральному полі.
5 Menu – клас, відповідальний за відображення меню. Клас має декілька атрибутів, такі як Selected – це прапорець, перевірки чи обраний даний пункт; Name - ім’я пункту; Font - шрифт меню; Position - позиція де буде відображено меню; baseColor - колір пункту, який не обраний; selectedColor – колір у яким буде відображений обраний пункт меню; MenuList – загальна кількість пунктів, які є в меню.
Методи цього класу:
- Update() – метод, який визивається при переключені з одного пункту меню на інший, та обчислює який пункт обраний на даний момент.
- Draw() - метод, який визивається при переключені з одного пункту меню на інший, та відображає меню і пункт, який обраний виділяє.
- SelectItem() - метод, який записує обраний пункт.
6 Player – клас, який описує гравця.
Він має такі атрибути:
Lives - кількість життів гравця;
Level - рівень на якому знаходиться гравець;
Points - кількість балів, які отримав гравець та прапорці, гравець пройшов рівень чи ні(Win), програв чи ні(Lose).
7 GameState – клас, відповідає ігрові стани.
Цей клас має такі атрибути:
Game– гравець, зараз грає;
Pause– зупинка гри;
Menu - гравець, зараз в меню
4. Опис програмної реалізації
4.1 Реалізація взаємодії між гравцем та системою
В ході курсової роботи мною реалізована комп’ютерна гра «Арканоід». В розробці було вжито деякі особистості, на яких я би хотів зупинити увагу.