Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kozyuk_Kostyantin_OOP_Kursova_robota.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.31 Mб
Скачать

2.2. Проектування класів та об’єктів

На основі того, що необхідно розробити гру змійка, можна виділити

головний об’єкт ієрархії – «Гра Змійка». Вона складається з «ігрового поля» та «меню».

Об’єкти-пункти меню: «Гра» з вкладеними підпунктами «нова гра» - розпочинає нову гру, «пауза» - тимчасово припиняє гру, «зупинити гру» - зупиняє поточну гру, «вихід» - дозволяє вийти з програми. Підменю «швидкість гри» з меню «Настроювання» дозволяє змінити швидкість руху змійки.

Об’єкт «ігрове поле» складається з об’єктів «ціль», «змійка», «перепона», «межі», «поле інформації» та «повідомлення». «Ціль» це клітка на ігровому полі, у яку має влучити змійка. «Змійка» складається з «частин» і згідно описаних вище правил рухається по ігровому полі. «Перепони» - це клітки на ігровому полі, які змійка має оминати. «Межі» ігрового поля встановлюють границі, за які змійка не може вийти. Влучання змійки в перепони чи вихід за ігрове поле зменшують її кількість гравців.

«Поле інформації» інформуватиме гравця про стан гри: «Повідомлення» - якій будуть видаватися різноманітні текстові повідомлення про події в грі та вказівки гравцю (наприклад, повідомлення про те, що гру закінчено, про перехід в наступний тур або виграш у грі). «Індикатор життів» - об’єкт, який показуватиме про кількість життів змійки. «Індикатор рівня» буде показувати номер рівня, на якому знаходиться гра. «Індикатор довжини» відображатиме довжину змійки, щоб гравець орієнтувався, скільки цілей поцілено – згідно вказаних правил для переходу на наступний рівень, потрібно поцілити в певну кількість цілей. На основі розробленої концепції об’єктів складемо схему залежності між ними і проілюструємо це на рис. 2.1. Далі з отриманої схеми (дерева) залежності об’єктів побудуємо блок-схему роботи програми (рис. 2.2).

Рисунок 2.1 – Залежність між об’єктами

Початок

Ігрове вікно гри «Змійка»

Інформаційна панель

Вибір швидкості

Гра

Допомога

Налаштування

Перемога

Привітання з перемогою

Так

Так

Так

Так

Так

Ні

Ні

Кінець

Вихід

Нова гра

Поразка

Так

Так

Ні

Ні

Ігрове поле

Ні

Ні

Про автора, та правила гри

Ні

Так

Ні

Рисунок 2.2 – Блок-схема роботи програми

Далі на отриманих знаннях про мову UML та розробленого графа і блок-схеми побудуємо UML-діаграму класів які будуть представлені в нашій програмі (рис. Д.1).

Для цього ми використаємо спеціальний пагін Green який встановлюється в ППП Eclipse.

2.3 Побудова uml-діаграм

На отриманій діаграмі зображені усі класи та об’єкти які використані для написання даного проекту. Їхнє призначення і функції представимо у специфікації.

Специфікація головних об’єктів і класів проекту:

Ім.’я: GameSnake

Відповідальність: головний клас проекту необхідний для запуску гри.

Операції: public static void main(String[] args) метод з якого починається вся програма.

Атрибути: String[] args

Ім.’я: GameFrame

Відповідальність: головний клас проекту необхідний для запуску гри.

Операції: public GameFrame() – конструктор вікна гри в якому встановлюються його параметри; public void newGame() - метод запускає новий сеанс гри; public void pauseGame() - метод створює паузу; public void stopGame() - метод зупиняє гру.

Атрибути: відсутні

Ім.’я: GameField

Відповідальність: ігрове поле.

Операції:

public GameField(GameFrame owner) – конструктор.

public void setDefault() – встановлення в початковий стан.

protected void createSnake() – створення змійки.

protected void createBorders() – Створює межі поля.

protected void createObstacles(int col) – створює col перепон на ігровому полі.

protected void createTarget() - створення мішені для змійки.

public void paintComponent(Graphics g) – малювання компонентів поля.

public void run () – обробка подій гри.

public void cheeckWin() – перевірка перемоги в грі.

public void processCrash() – перевірка влучання в перепону.

public void newGame() – Запуск нової гри.

public void pauseGame() – пауза в грі.

public void stopGame( ) – зупинка гри.

public void setGameSpeed(int s) – задання швидкості гри.

Атрибути:

Snake snake – змійка.

GameFrame frame – змінна для доступу до вікна гри.

InformPanel informPanel – інформаційна панель.

protected boolean isGameRun = істина, якщо йде гра.

protected boolean isGamePause – істина під час паузи.

int gameSpeed – швидкість гри.

protected int colObstacles - Кількість перепон.

protected int delay - Затримка при русі змійки.

final int w = 35,

final int h = 25 – розміри ігрового поля.

protected GameSquare square[][] – ігрові клітки.

boolean keyBlocked – істина, коли заблокована клавіатура.

Ім.’я: InformPanel

Відповідальність: Інформаційна панель, головне меню.

Операції:

public InformPanel(final GameField field) - Конструктор

public void updateInfo(int lives, int len, int speed, int obstacles) Зміна поточних даних новими.

public void paintComponent(Graphics g) – малювання панелі.

Атрибути: protected int lives, len, speed, obstacles – кількість життів, довжина змійки, швидкість змійки, кількість перепон;

Ім.’я: Snake

Відповідальність: змійка

Операції:

public Snake(int c, int xPos, int yPos) – створення змійки довжини с з заданими координатами

public void increment(SnakeElement lastElem) додавання до змійки нового елемента

public boolean isMaxLong() - перевірка досягнення змійкою максимальної довжини

public boolean isKilled() – перевірка, чи «жива» змійка

public void decrementLive() – забирає життя в змійки.

Атрибути:

int colElements – кількість елементів

final int maxLen – максимально можлива довжина

SnakeElement elem[] – масив частин змійки

int xNextSpeed, yNextSpeed – напрям руху на наступному кроці

final int startLives – початкова кількість життів

private static int lives – зберігає кількість життів змійки

Ім.’я: SnakeElement

Відповідальність: елемент змійки

Операції:

public SnakeElement(int xPos, int yPos) - конструктор задає координати елемента

public void move() – рухає елемент

public void setSpeed(int x, int y) – встановлення швидкості елемента

Атрибути:

int xSpeed – швидкість елемента змійки по горизонталі

int ySpeed - швидкість елемента змійки по вертикалі

int xPos - позиція елемента змійки по горизонталі

int yPos - позиція елемента змійки по вертикалі

public SnakeElement(int xPos, int yPos) - конструктор задає координати елемента

public void move() – рухає елемент

public void setSpeed(int x, int y) – встановлення швидкості елемента

Ім.’я: GameSquare

Відповідальність: клітка ігрового поля

Операції:

public void setSize(int w, int h) - встановлює розміри

public void setBorder(boolean b) – робить клітинку перепоною

public void setUsed(boolean b) – робить клітинкою зайнятою/незайнятою

public void paintComponent(Graphics g) - малювання клітинки

Атрибути:

int w, h - розміри

boolean used - використання

boolean isBorder - перепона

Ім.’я: MenuString

Відповідальність: строка меню.

Операції: public static void main(String[] args) метод з якого починається вся програма.

Атрибути:

JMenu Game;

JMenuItem mi_NewGame, mi_PauseGame, mi_StopGame, mi_ExitGame;

JMenu Options, Speed;

JMenuItem mi_S1, mi_S2, mi_S3;

JMenu Help;

JMenuItem mi_About;

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