Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
my.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
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, не більше площі поля)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]