Похожие презентации:
ТА-8427-1
1. ФАХОВИЙ КОЛЕДЖ ЗАКЛАДУ ВИЩОЇ ОСВІТИ «МІЖНАРОДНИЙ НАУКОВО-ТЕХНІЧНИЙ УНІВЕРСИТЕТ ІМЕНІ АКАДЕМІКА ЮРІЯ БУГАЯ» Циклова комісія
інженерії програмногозабезпечення та фізико-математичних
дисциплін
Курсова робота з дисципліни “Об’єктноорієнтоване програмування”
на тему:
РОЗРОБЛЕННЯ ГРИ «ХРЕСТИКИ-НУЛИКИ»
З ВИКОРИСТАННЯМ ТЕХНОЛОГІЇ ОБ’ЄКТНО
ОРІЄНТОВАНОГО ПРОГРАМУВАННЯ
Здобувач:
Науковий керівник:
2.
Метою курсової роботи є розроблення програмної реалізаціїгри «Хрестики-нулики» з використанням технології об’єктноорієнтованого програмування на мові C++.
Об’єктом дослідження є процес проектування та реалізації
програмної системи за допомогою засобів об’єктноорієнтованого програмування.
Предметом дослідження виступають принципи ООП та їх
практичне застосування під час розробки інтерактивної гри.
3. Порівняльна характеристика мов програмування для реалізації гри
КритерійC++
Python
Java
Швидкодія
Висока
Середня
Висока
Ручне + RAII
Автоматичне (GC)
Автоматичне
Повна
Повна
Повна
Висока
Середня
Висока
Керування
пам’яттю
Підтримка ООП
Навчальна
цінність
Розмір
виконуваного
файлу
Малий
Потребує
інтерпретатора
Середній
4. Діаграма класів основної архітектури
5. Організація інтерфейсу користувача та взаємодії з гравцем
Ігрове поле під час ходу гравцяГоловне меню гри
6. Повідомлення про перемогу
7.
Метод checkWinner() класу GameBoardchar GameBoard::checkWinner() {
// Перевірка рядків і стовпців
for (int i = 0; i < 3; i++) {
if (cells[i][0] != ' ' &&
cells[i][0] == cells[i][1] &&
cells[i][1] == cells[i][2])
return cells[i][0];
if (cells[0][i] != ' ' &&
cells[0][i] == cells[1][i] &&
cells[1][i] == cells[2][i])
return cells[0][i];
}
// Перевірка діагоналей
if (cells[0][0] != ' ' &&
cells[0][0] == cells[1][1] &&
cells[1][1] == cells[2][2])
return cells[0][0];
if (cells[0][2] != ' ' &&
cells[0][2] == cells[1][1] &&
cells[1][1] == cells[2][0])
return cells[0][2];
return '\0';
}
Фрагмент алгоритму мінімакс у класі
AIPlayer
int AIPlayer::minimax(GameBoard& board,
bool isMaximizing) {
char winner = board.checkWinner();
if (winner == symbol) return 10;
if (winner != '\0') return -10;
if (board.isFull()) return 0;
// ... (повна реалізація з альфа-бета)
}
8. Результати виконання тестових сценаріїв
№сценарію
1
Опис сценарію
Перемога X по
горизонталі
Очікуваний
Фактичний
результат
результат
Перемога X
Перемога X
Пройдено
Статус
3
Перемога O по діагоналі
Перемога O
Перемога O
Пройдено
4
Нічия
Нічия
Нічия
Пройдено
6
Гра проти AI
AI не програє
AI не програє
Пройдено
Повторне
7
Некоректне введення
запрошення
вводу
Повторне
запрошення
Пройдено
9. ВИСНОВКИ
У результаті роботи створено модульну, розширювану та якісно структуровану програму, яка підтримуєдва режими гри (гравець проти гравця та гравець проти комп’ютера), коректно обробляє введення
користувача, реалізує непереможний штучний інтелект на основі алгоритму мінімакс з альфа-бета
відсіканням та забезпечує стабільну роботу в усіх можливих сценаріях.
Розроблена програмна система демонструє практичне застосування фундаментальних принципів
об’єктно-орієнтованого програмування: інкапсуляції, успадкування, поліморфізму та абстракції.
Використання цих принципів дозволило отримати чистий, зрозумілий та легко підтримуваний код, що
відповідає сучасним стандартам інженерії програмного забезпечення.
Отримані результати підтверджують актуальність обраної теми. Навички, набуті під час виконання
курсової роботи, є важливими для подальшої професійної діяльності в галузі інженерії програмного
забезпечення. Розроблений проєкт може бути використаний як навчальний приклад, а також як основа
для створення більш складних ігрових застосунків або демонстраційних програм.
Перспективами подальшого розвитку роботи є перехід на графічний інтерфейс (з використанням SFML
або Qt), реалізація мережевого режиму гри, збільшення розміру ігрового поля, додавання статистики
партій та вдосконалення алгоритму штучного інтелекту.