- •Перелік скорочень
- •1 Аналіз предеметної області та відомих реалізацій
- •Аналіз предметної області
- •Огляд відомих реалізацій
- •Постановка задачі на розробку програмного забезпечення
- •2 Проектування програмного модуля
- •2.1. Особливості ооп
- •2.2 Універсальна мова проектування uml
- •2.4 Розробка uml-діаграм класів
- •2.3 Розробка алгоритму програми
- •Програмна реалізація спроектованого модуля
- •3.1 Обґрунтування вибору мови та середовища програмування
- •3.2 Програмна реалізація основних модулів
- •3.3 Результати тестування додатку
- •Висновки
- •Список використаної літератури
- •Додатки додаток а
2.3 Розробка алгоритму програми
1. Ініціалізуємо два двовимірних масива. Один буде типу int, а другий - типу bool. У масив matrix (цілочисельний) будуть записані значення, відповідно міна (-1) або кількість мін у сусідніх комірках. Комірки масиву open (логічного) будуть поставлені у відповідність з комірками масиву matrix і показувати, чи відкрита користувачем та чи інша коміка.
2. За допомогою функції генерації випадкових чисел випадковим чином виберемо координати кількох комірок, в які запишемо (-1), це кодує міну.
3. Розробимо функцію, що розраховує кількість мін у сусідніх комірках, при цьому змінюючи комірки масиву matrix, не рівні (-1).
4. Організуємо основний ігровий цикл, в якому на кожному виборі комірки будемо перемальовувати ігрове поле.
5. Дочекаємося вибору комірки користувачем, після чого викличемо функцію, що відкриває вибрану комірку і сусідні з нею, якщо вони порожні (значення рівне 0).
6. Перевіримо, якщо значення у вибраній комірці (-1), то зробимо видимими всі міни і виведемо повідомлення про програш, вийшовши з ігрового циклу.
7. Якщо попередня перевірка повернула false, перевіримо, чи відкрито все поле, крім осередків з мінами. У разі якщо так і є, виведемо повідомлення про виграш і перервемо ігровий цикл. В іншому - знову запитаємо вибір комірки після перемальовування поля, тобто перейдемо до пункту 5.
2.4 Розробка uml-діаграм класів
Розроблена UML – діаграма класів проекту має вигляд:
Рисунок 2.1 – UML-діаграма класів програмного модуля гри "Сапер"
На рисунку 2.1 можна побачити залежність між класами.
Проектована система матиме 5 класів, головним з яких є клас Main.Клас Main в головній функції створює об'єкт класу Minesweesper, який і є головним об'єктом програми, саме головним вікном програми.
Розглянемо детальніше основні класи, що входять в дану систему.
Клас: Main
Відповідність: головний клас модуля
Методи :
Void main() – основний метод системи, який відповідає за запуск програми, та взаємодію між класами.
Клас: Minesweeper
Відповідність: клас що відповідає за головне вікно гри.
Методи:
public void reset() – встановлює поле у початковий стан
public void setpanel(int level, int setr, int setc, int setm) – створює поле відповідного розміру і з відповідною кількістю мін
public void setmanue() – відповідає за меню в грі
Клас: MouseHendeler
Відповідність: клас, що відповідає за дії пов'язанні з нажаттям мишки
Методи:
public void mouseClicked(MouseEvent me) – визначає нажату комірку, якщо гра не почалась, то починає її
public void winner() – перевіряє чи гра є виграна
public
void
showvalue(MouseEvent
e)
– відповідає за відкриття комірки і
відображення кількості мін у сусідніх
комірках
public void calculation() – рахує кількість мін у сусідніх комірках
public void dfs(int row, int col) – встановлення відповідної іконки в комірці
public void setmine() – виставлення мін на полі
public void setic() – імпорт іконок в масив
Клас: Stopwatch
Відповідність: клас, що відповідає за відображення часу
Методи:
public void Start() – ініціалізує таймер
public void run() – рахує час, що пройшов від початку гри
private
void displayElapsedTime(long elapsedTime) – динамічно
відображає час, що пройшов з початку
гри
public void stop() – зупиняє відлік часу, збиваючи таймер на 0
Клас: Customizetion
Відповідність: клас, що відповідає за створення користувацького поля
Методи:
public void actionPerformed(ActionEvent e) – зчитує введені дані, та створює відповідне поле
public int row() – перевіряє кількість рядків(не менше 10, не більше 30)
public int column() - перевіряє кількість стовпців(не менше 10, не більше 30)
public int mine() – перевіряє кількість мін (не менше 10, не більше площі поля)
