Please use this identifier to cite or link to this item:
https://er.chdtu.edu.ua/handle/ChSTU/9169Full metadata record
| DC Field | Value | Language |
|---|---|---|
| dc.contributor.advisor | Первунінський, Станіслав Михайлович | - |
| dc.contributor.author | Стрічевський, Ілля Владиславович | - |
| dc.date.accessioned | 2026-03-27T20:54:23Z | - |
| dc.date.available | 2026-03-27T20:54:23Z | - |
| dc.date.issued | 2024-12-21 | - |
| dc.identifier.uri | https://er.chdtu.edu.ua/handle/ChSTU/9169 | - |
| dc.description.abstract | АНОТАЦІЯ Стрічевський Ілля Владиславович , представляю кваліфікаційну роботу бакалавра на тему: «Програмне забезпечення мобільного застосунку гри Finish» за сnеціальностю « 121 - Інженерія програмного забезпечення» в Черкаському державному технологічному університеті в м. Черкаси в 2024 році. Гра "Finich " є захоплюючим інтерактивним досвідом, розробленим для платформи Python з використанням бібліотеки Pygame. Вона пропонує гравцям унікальну можливість керувати автомобілем у високоскоростному руху по міській дорозі, уникаючи зіткнень з іншими автомобілями. Основні особливості гри: Геймплей: Гравець керує автомобілем, що рухається вгору по екрану, шукаючи можливості для обгону та уникнення інших транспортних засобів. Режими гри: Включає режими "Гра", "Результати" та "Гра закінчена", кожен з яких має власні унікальні функції і виклики для гравця. Таблиця рекордів: Записує та відображає досягнення гравців, що сприяє змагальному середовищу і мотивації до досягнення нових рекордів. Графіка та атмосфера: Оформлення у стилі міської автошляхи забезпечує іммерсивний ігровий досвід, а функціональні кнопки та елементи управління забезпечують комфортну інтеракцію користувача з грою. Гра "Finich " спрямована на розвиток реакції, управлінських навичок підвищення моторної активності, забезпечуючи при цьому розважальну і корисну відпочинкову можливість для широкого кола користувачів. | uk_UA |
| dc.description.abstract | ANNOTATION Stiychevskyi Ilуа Vladyslavovych presents the bachelor's qualification work on the Topic "Finich' game mobile application software" in the specialty "121 – Software engineering" at Cherkasy State Technological University in Cherkasy in 2024. The game "Finich " is an exciting interactive experience developed for the Python platform using the Pygame library. It offers players а unique opportunity to control а car at high speed along urban roads, avoiding collisions with other vehicles. Кеу features of the game include: Gameplay: Players control а car moving upwards on the screen, seek.ing opportunities to overtake and avoid other vehicles. Game Modes: Includes "Game", "Results", and "Game Over" modes, each with unique functions and challenges for the player Leaderboard: Records and displays players' achievements, fostering а competitive environment and motivation to achieve new records. Graphics and Atmosphere: Styled like an urban highway, providing an immersive gaming experience. Functional buttons and control elements ensure comfortable interaction with the game. "Finich " aims to develop reaction times, management skills, and increase motor activity, offering an entertaining and beneficial leisure option for а wide range of users. | uk_UA |
| dc.language.iso | uk | uk_UA |
| dc.title | Програмне забезпечення мобільного за стосунку гри «Finish | uk_UA |
| dc.type | Bachelor Thesis | uk_UA |
| Appears in Collections: | 121 Інженерія програмного забезпечення (Інженерія програмного забезпечення) | |
Files in This Item:
| File | Description | Size | Format | |
|---|---|---|---|---|
| Кваліфікаційна робота бакалавра Стрічевський Ілля Владиславович.pdf Restricted Access | 21.11 MB | Adobe PDF | View/Open Request a copy |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.
Extracted text
м1н1 ТЕР тво О 1 ІТИ І нл УКИ УКРАfНИ
ЧЕРКАСЬКИЙ ДЕР)КАВНИй Тl:.ХНОЛОГІ JНИЙ УНІВЕР 'ИТЕТ
Факультет інформаційних техншюr·ій і систем
Кафедра програмного забезпечення аотоматизованих систем
ПОЯСНЮВАЛЬНА ЗАПИСКА
до кваліфікаційної роботи
бакалавра
на тему: «Програмне забезпечення мобільного застосунку гpи«Finish »
Виконав: студент 4 курсу, групи ПЗ-2004
спеціальності
121 «Інженерія програмного забезпечення»
Студент Стрічевський І.В.
Керівник Первунінський С.М.
Рецензент Войтецький В.В.
Черкаси 2024
Черкаський леожа V • V •
внии технолопчнии уюверситет
повне 11аймс11уnа1111я вищого 11ао•1альноrо закладу
фа~-ультет інформаційних технологій і систем
Кафедра проrрамноrо забезпечення автоматизованих систем
Освітній рівень бакалав
Спеціальн ість 121 «Інженерія проrрамноrо забезпечення»
Освітня програма Інженерія проrрамноrо забезпечення
ЗАВДАННЯ
НА КВАJПФІКАЦІЙНУ РОБОТУ СТУДЕНТУ
Стрічевський Ілля Владиславович
(прізвище, ім 'я, по батькові)
Тему проекту (роботи) «Програмне забезпечення мобільного застосунку гри Finish»
Керівник проекту (роботи) Первунінський Станіслав Михайлович д.т.н. професор
(прізвище, ім 'я , по батькові, науковий ступінь, вчене звання)
Затверджені наказом Черкаського державного технолоrічноrо університету від« 26 >> лютоrо 2024
року №60/04
2. Строк подання студентом проекту (роботи)---=--31"--'.=05=·=2=02=-4-'----- -----------
3. Вхідні дані до проекту (роботи) стандарти програмного забезпечення; процеси управління;
вимоги до проекту; календарне планування проекту; управління ризиками проекту; управління
ресурсами
4. Зміст розрахунково-пояснювальної записки (перелік питань, які потрібно розробити) Вступ;
Існуючі методи та засоби вирішення поставлених завдань; Впровадження результатів досліджень у
практику; Проектування програмного забезпечення інформаційних систем; Розробка та тестування
програмного забезпечення; Висновки; Список використаних джерел;
о атки.
5. Перелік графічного матеріалу (з точним зазначенням обов'язкових робіт проекту)
Слайд 1, Слайд 2, Слайд 4, Слайд 5, Слайд 6, Слайд 7, Слайд 8, Слайд 9, Слайд 10,
6. Консультанти розділів роботи
Прізвище, ініціали та Підпис, дата
Розділ
посади консультанта Завдання видав Завдання прийняв
1
2
7. Дата видачі завдання ~02~~!!.РУ]..,д~н~я~20°'"'2=3~Р------------------
КАЛЕНДАРНИЙ ПЛАН
Строк виконання
етапів
№ Примі11<
Назва етапів випускної роботи 11
кваліфікаційної
п/п
роботи
1 02.12.2023 виконано
Постановка задачі
2 Підготовка завдання 10.12.2023 виконано
--..
з Погодження завдання 25.12.2023 виконано
4 Затвердження завдання 12.01.2024 виконано
Основна стадія
1 Підбір матеріалів 28.01.2024 виконано
2 Аналіз шляхів вирішення поставлених задач 15.02.2024 виконано
з Розрахунок основних параметрів роботи 02.03.2024 виконано
4 Вибір кінцевого варіанту проектного рішення 21.03.2024 виконано
5 Оформлення первісної редакції роботи 20.04.2024 виконано
Заключна стадія
1 Узгодження прийнятих проектних рішень з керівником 03.05.2024 виконано
2 Оформлення поясюовальної записки роботи в кінцевій 10.05.2024 виконано
редакції
з Попередній захист роботи 29.05.2024 виконано
4 Затвердження роботи 11.06.2024 виконано
5 Рецензування роботи 11.06.2024 виконано
6 Захист роботи
виконано
Студент Стрічевський І.В.
(прізвище та ініціали)
Керівник роботи Первунінський С.М.
(підпис) (прізвище та ініціали)
АНОТАЦІЯ
Стрічевський Ілля Владиславович, представляю кваліфікаційну роботу
бакалавра на тему: «Програмне забезпечення мобільного застосунку гри Finish» за
сnеціальностю « 121 - Інженерія програмного забезпечення» в Черкаському
державному технологічному університеті в м.Черкаси в 2024 році.
Гра "Finich " є захоплюючим інтерактивним досвідом, розробленим для
платформи Python з використанням бібліотеки Pygame. Вона пропонує гравцям
унікальну можливість керувати автомобілем у високоскоростному руху по міській
дорозі , уникаючи зіткнень з іншими автомобілями.
Основні особливості гри:
Геймплей: Гравець керує автомобілем, що рухається вгору по екрану, шукаючи
можливості для обгону та уникнення інших транспортних засобів.
Режими гри: Включає режими "Гра", "Результати" та "Гра закінчена", кожен з
яких має власні унікальні функції і виклики для гравця.
Таблиця рекордів: Записує та відображає досягнення гравцш, що сприяє
змагальному середовищу і мотивації до досягнення нових рекордів.
Графіка та атмосфера: Оформлення у стилі міської автошляхи забезпечує
іммерсивний ігровий досвід, а функціональні кнопки та елементи управшння
забезпечують комфортну інтеракцію користувача з грою.
Гра "Finich " спрямована на розвиток реакції, управшнських навичок
підвищення моторної активності, забезпечуючи при цьому розважальну 1 корисну
відпочинкову можливість для широкого кола користувачів.
-
ANNOTATION
Stiychevskyi Пуа Vladyslavovych presents the bachelor's qualification work on the
Jpic "Finich' game mobile application software" in the specia]ty "121 - Software
:ngineering" at Cherkasy State Technological University in Cherkasy in 2024.
The game "Finich " is an exciting interactive experience developed for the Python
latfonn using the Pygame library. It offers players а unique opportunity to control а car at
.igl1 speed along urban roads, avoiding collisions with other vehicles.
Кеу features of the game include:
Gameplay: Players control а car moving upwards on the screen, seek.ing opportunities
J overtake and avoid other vehicles.
Game Modes: Includes "Game", "Results", and "Game Over" modes, each with
mique functions and challenges for the player
Leaderboard: Records and displays players' achievements, fostering а competitive
:nvironment and motivation to achieve new records.
Graphics and Atmosphere: Styled like an urban highway, providing an immersive
~aming experience. Functional buttons and control elements ensure comfortable interaction
'v'ith the game.
"Finich " aims to develop reaction times, management sk.ills, and increase motor
tctivity, offering an entertaining and beneficial leisure option for а wide range of users.
ЗМІСТ
ВСТУП .. . . .. .. . ......... . . ............ . ..... .. ........ . ... . .... . . .. . . . . .. . .... .... .. . .. . .... .. . .. 5
РОЗДІЛ 1 ІСНУІОЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ'ЯЗАННЯ ПОСТАВЛЕНИХ
ЗАВДАНЬ ... .. .. . .............. . .... . .. ....... .... .. .... . . .. . ... ........ .. . .... .. ..... . .. . ... .... 9
1.1 Аналіз існуючих методів на засобів вирішення задачі ...... . . . .... . .. . ........... 9
1.2 Аналіз існуючих аналогів програми ... ..... .. .... ... .. . .... . .... . . . . . ......... .. ... 1О
1.3 Постановка задач ................................................................. . ..... 11
Висновки до розділу 1 ............ .. ........ ................ . . .. ............ . ................. 12
РОЗДІЛ 2 ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ СИСТЕМИ
...................................................................................................................................... 13
2.1 Моделювання предметної області ................................................... .............. 13
2.1.1 Предметна область моделювання. Модель предметної області.
Словник предметної області ......................... ............................................ ........ 13
2.1.2 Елементи моделювання предметної області ............................ ...... .. ..... . 17
2.1.3 Робоча область моделювання ... ......................... ................................. .. ... 17
2.2 Формування та аналіз вимог ......... ............................................ .. ... ... .............. 19
2.2.1 Формування вимог до програмного забезпечення. Первинні і детальні
вимоги. Вимоги замовника і розробника. Функціональні та
нефункціональні вимоги ........................................ ... ..... ............ ........... ..... ....... 19
2.2.2 Формування вимог за допомогою діаграми прецедентів ........ ....... ..... . 23
2.3 Проектування логічної структури програмного комплексу ....................... 24
2.3 .1 Діаграми класів ...................................... ... ................. ................. ........... ... 24
2.3.2 Діаграми пакетів ........ ......................... ......... .............. ............................... 25
2.4 Архітектурне проектування ................ ......... .......................... ..... .. .. ................ 26
2.4.1 Діаграма компонентів ......... .... ............ .......... .... ..................................... ... 26
2.4.2 Розгортання програмної системи на апаратних засобах. Діаграма
розгортання ............................................................... ... ....................... ... ............. 27
lІист № Докум. Підпис Лата ЧДТУ 242210.ОlПЗ
:Е06· СтРічевський І.В ~-,;,;_'-.J Літ. І Лист І Листів
11вник hервунінський С.М 11/'$',#Д ІР «Програмне забезпечення
І І І І
мобільного застосунку гри
ФІТІС, Кафедра ПЗАС,
онтр. Півень О.Б. А'А'Е.і Finish. »
-в.:. ._ Голvб С.В. І/ 11- vf " л _, ПЗ-2004
3
~
__ 5 i\'1o;t люпnння тш 'Jti11ю1 ·не' мн .. ....... ... ..... ....... .. .............. ..................... ... . . 1r)
-.5. 1 )\inti)aмn )tiяm,ttocтi ............ ... ... .... ... ..... ... ... , .. ., ..... 2(J
• • •••••• •• • •• •••••••І• t. •••••••••••• •
.5 .... Ді"н1 а .fЗ ПОСJ1Ї )\ОВІ10СТі .... ........................... .. ..... .. .. ... ... . . ... . . ..... .. ... . .. ........ 10
2.5 .З Діа11 ама 1(0 1унікації ................................................................. ....... ........ 32
2·5.4 Діаг1 ама сюнчснного аотомату ..................... ............ ....... ................... .... 33
Висновки до розд1лу 2 ..... ..... . .. ...... ... ... .. .............. . ....... .. ... .. . .... . .. ........ 34
РОЗДІЛ З РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ............... ... .... .... .. ..... 35
3.1 Розробка програмного комплексу ...................................................... .. ....... ... 35
3.1.1 Обrрунтування вибору засобів реалізації .... ............ ........................... .... 35
З .1.2 Опис структурної ( функціонально·!) схеми ...... ........ .... •. ... ··· ··· ... ....... .. .. · 36
З . І .З Опис логічної схеми системи .... ... ... ....... ...... ........... ................. ............... 39
3.1.4 Розробка бази даних .................... ......... ... .... .. .... ... .. ... .. .... ....... ... .............. . 39
3 .1 .5 Розробка інтерфейсу користувача .......... ....... .................... ... •. ............. ···· 4о
3 .1.6 Опис розробки програмних компонентів .. .. ......... .... ... .. ......... ··· ·········· ··· 41
3.2 Тестування системи ··· ······· ··· ··· ····· ··········· ·· ·· ········· ····· ·· ·· ·············· ······· ···· ········· ·43
3.2.1 Модульне тестування ................................. .. ... .. .. .... ... ...... ... .... ....... .......... 43
З .2.2 Інтеграційне тестування ......................................... .. .. ........... ...... .... .. ...... •4 5
з . 2 . 3 системне тестування' ....................................................... .. ...... ..... ........... . 46
3.2.4 Приймальне тестування ....... .. ........... ... ......................... ...... ......... ............ 48
З.З Приклади впровадженого програмного комплексу .. .................... ............... 52
Результати тестування . . . . ..................................................... .. ... ..........5 6
Висновки до розд1лу З . .. ... . ... .. .... . .............. .... ..................................... 58
висновки ............................................................................................................... 59
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ .. ... ....... ................ ... ........... ..... .. ...... .......... . 60
ДОДА ТОК А .......................... .... ........................................... ... ........ ... .. .... ............. .... 62
ДОДА ТОК Б ... . ................................................................ . ... . .. . ... .... . 63
ДОДАТОК В . .... . ....... . . ....... ............ . .... . ............. . .............. .. ........ ..... .7 1
ДОДА ТОК Г ... . . .. ... .. ..... .. .... .. ................ . ................. . . . ....... .... ...........7 6
Лист
ЧДТУ 242210.ОlПЗ
Зм. Лист № док. Підпис Дата
4
ЧДТУ.24 2210.ООІПЗ
ВСТУП
Актуальність теми: Актуальність теми визначається потребою у розробці
програмного забезпечення розробка ігор завжди була важливою та актуальною
сферою в галузі програмування. З розвитком технологій ігри стали не лише
способом розваги, але й інструментом для навчання, розвитку когнітивних
навичок і навіть терапії. У сучасному світі мобільні та комп'ютерні ігри займають
значне місце в повсякденному житті багатьох людей, забезпечуючи відпочинок і
релаксацію після важкого робочого дня.
Мета розробки: Метою розробки є розробка програмного забезпечення
інформаційної технології, що дозволить створити якісний та захоплюючий
ігровий продукт, який поєднує в собі елементи симулятора водіння та аркадної
гри, забезпечуючи користувачам цікаве та корисне проведення часу.
Завдання розробки: Завданням розробки є створення програмного
забезпечення для гри "Finish ", яке включає в себе наступні етапи:
- збір та аналіз вимог до гри, включаючи ігрову механіку, функціональні
можливості, інтерфейс користувача, звуковий супровід та графічні
елементи;
- визначення вимог до продуктивності, безпеки та надійності програмного
забезпечення;
- розробка архітектури програмного забезпечення, включаючи структуру
класів та їх взаємодію;
- створення діаграм діяльності, станів та інших UМL-діаграм для
візуалізації логіки та взаємодії компонентів гри;
- проектування інтуїтивно зрозумілого та зручного інтерфейсу для
гравцш;
- розробка макетів екранів гри, включаючи головне меню, ігрове вікно,
екран результатів та екран завершення гри;
. .
- програмування основних 1грових мехаюк, таких як керування
автомобілем, рух трафіку, обробка зіткнень та підрахунок очок.
5
чл· У.24 22 10.001rп
- ІНТ грАЦЇЯ 11щфіч11н , Тй ·m !<(ШИХ JІСМ <..: ІІТ і n у Гр 13 )(О І ІОМОГОЮ
бібліотеки Р н111 •
'
- розробка та nп, оваJ\ЖСІІНя ба·т щmих J\Шf ·1бсрсження ре1ут-,татін
гравщв.
творення механізмів збереження та відображення найкращих
результатів;
- виконання модульного, інтеграційного та системного тестування для
виявлення та виправлення помилок;
- оптимізація коду для забезпечення стабільної та швидкої роботи гри;
- п1дготовка технічної документації, що описує архітектуру, ігрову логіку ,
інтерфейс користувача та процес тестування;
- створення керівництва користувача з інструкціями по встановленню та
використанню гри;
- підготовка програмного забезпечення до розповсюдження та інсталяції;
- забезпечення технічної підтримки та оновлень для користувачів після
випуску гри.
Об'єкт розробки: Об'єктом розробки є комп'ютерна гра "Finish",
реалізована на основі бібліотеки Pygarne з використанням мови програмування
Python. Гра належить до жанру гоночних аркад, де гравець керує автомобілем,
уникаючи зіткнень з іншими транспортними засобами на дорозі та намагаючись
набрати якомога більше очок.
Предмет розробки: Предметом розробки є алгоритми та програмн1
компоненти для створення інтерактивної гри "Finish ", включаючи графічний
інтерфейс, механіку руху автомобіля, генерацію трафіку, обробку зпкнень,
збереження та відображення результатів гравців, а також інтеграцію звукових
ефектів та музики.
Методи проєктування та конструювання:
Для розробки програмного забезпечення гри "Finish" використовуються такі
методи проектування та конструювання:
6
ЧДТУ .24 221О .ОО І ТТ
Об'єктно-орієнтоnане _
· проrрамуnання (О І І ):nикористання класів та об'єктів
для моделювання елементі~3 . . , .
. . гри, 1аких як автомобшь rраt=щя , автомобілі трафіку,
дороги та 1нш1 компоненти·
'
:t\1оделювання 110 _ · 1 " . .
. вед~н <и сис rеми:використання д1 аrрам д1яльності та
д1аграм станів для м . .
оделювання р1зних стан1 в гри (меню, гра, кінець гри) та
переходів між ними·
'
Проектування
користувацького інтерфейсу : розробка інтуїтивно
зрозумілого та зручн ого ·ш тер ф еи~ су користувача з кнопками для керування
автомобілем , меню для запуску гри, перегляду результат1. в та виходу з гри
використання шрифтів та кольор1в для забезпечення візуальної
привабливості гри;
Робота з графікою:завантаження та обробка зображень для автомобілів,
доріг та інших графічних елементів використання бібліотеки Pygame для
відображення графіки та обробки подій;
Робота зі звукомінтеграція звукових ефектів та фонової музики для
п1двищення занурення гравців у гру використання бібліотеки Pygame для
відтворення звуків та музики;
Робота з базою даних:використання SQLite для збереження та зчитування
результатів гравців створення, оновлення та читання таблиць бази даних для
зберігання результатів;
Тестування та відлагодження:Виконання модульного, інтеграційного та
системного тестування для забезпечення надійної роботи гри виправлення
помилок та оптимізація продуктивності коду.
Опис отриманих результатів. Розроблено комплексне програмне
забезпечення для гри "Finish". Під час виконання роботи було досягнуто кілька
важливих результатів. По-перше, проведено детальний аналіз вимог та створено
архітектуру гри, що включає UМL-діаграми для візуалізації структури та взаємодії
компонент1в.
Інтерфейс користувача було розроблено інтуїтивно зрозумілим та зручним,
включаючи головне меню, ігровий екран, екран результатів та завершення гри.
7
Ч)\ТУ.24 22 1О . ОО 11 r ·з
Реалізовано основні ir) 0131. . .
б . б
. r М XllHl!<J,f , Tot,i SП( ксrуmНІН SІ НВТ()М()б ілсм r yx трафіку,
о ро ка зпкн • нь та під
• ... . рахун І( () l l()J( , ВИТ(Оf)ИСТОІІУІО 'Пf біблі()'ГС І<у r ygamc /UJЯ
1нтегращ 1 1р афі кн та зnч, .
J ,(ОВН , сфсІ(Т \ Н ,
Також було розроб
. лено та впроваджено базу ланих юнr 1береження
результатш гравців за ~ .
. . .., д O помот ою SQL1te. Тестування включало модульне,
1нт грац1ине та системне тес .
1.ування для виявлення та виправлення помилок, що
забезпечило стабільність та ·.., ·
нащиюсть роботи гри.
Підготовлено технічну . .
документащю, яка описує архпектуру, ігрову логіку,
інтерфейс користувача та ·
процес тестування, а також кер1вництво користувача з
. .
ІНструкц~ями по встановленню та використанню гри . В результаті , створено
високоякісне програмне 3 б . . v
а езпечення для гри "Fш1sh" , що надає захоплюючии та
інтерактивний ігровий досв· 1· 6 - ·.., б ·
ІД за езпечує ста 6шьну та надшну ро оту вс1х
компонентів.
Практичне значення досягнутих результатів. Практичне значення
досягнутих результатів гри "Finish" полягає в наступному:
- розвиток програмних навичок: Розробка гри дозволила покращити
навички в області об'єктна-орієнтованого програмування, роботи з
графікою та звуком, роботи з базою даних та проєктування
користувацького інтерфейсу;
- впровадження та демонстрац1я: Гра є практичним доказом здатносп
впровадження ігрового програмного забезпечення з використанням
Python та бібліотеки Pygame. Вона демонструє можливості створення ігор
зі звуком, графікою та базою даних;
розвага та навчання: Гра надає користувачам можлив1сть не лише
отримати задоволення від гри, але й покращити свої реакційні навички та
концентрацію уваги через виконання різних завдань;
створення власного продукту: Розробка "Finish" дає змогу створити
власний інтерактивний продукт, який може бути додатковим засобом
вивчення або демонстрації навичок програмування та геймдизайну.
8
ЧДТУ.24 2210.ООJПЗ
РОЗДІЛ l ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ'ЯЗАННЯ
ПОСТАВЛЕНИХ ЗАВДАНЬ
1.1 Аналіз існуючих м . . . .
етощв та засо 6ІВ вир1ше11ня задач~
Щоб виконати анал·І з ·І снуючих метод1·в та засо 5·ш для вир1· шення задач~·,
перш за все слід розглянути ті підходи та інструменти, які вже використовуються
У схожих програмах або проектах. Для гри "Finish" можна розглянути наступні
аспекти:
- мова програмування та бібліотеки: Аналізуються можливост1
використання мов програмування, що підтримують розробку ігор, таких
як Python з бібліотекою Pygame. Питання включають ефективність,
зручність У використанні, доступність документації та підтримку
сшльноти;
- графічний движок і анімація: Розглядаються методи роботи з графікою,
включаючи відображення фонів, рух об'єктів та анімацію. Pygame надає
можливості для простого керування графікою та анімацією, але може бути
обмеженим у порівнянні з іншими спеціалізованими ігровими движками;
- обробка введення користувача: Важливо оцінити, як керувати введенням
від користувача через мишу або клавіатуру. Pygame надає зручні
інструменти для цього, такі як обробники подій;
- аудіо та звук: Досліджується робота з аудіофайлами, їх відтворення та
інтеграція з грою. Pygame також має підтримку роботи зі звуком;
- управління станами гри: Аналізується методика керування різними
станами гри, такими як головне меню, гра, гра закінчена, таблиця рекордів
ІТ. д.;
- база даних і збереження даних користувача: Для зберігання рекордів та
інших даних важливо оцінити використання баз даних, таких як SQLite,
для ефективного зберігання та отримання інформації;
- Ігрова механіка та ігровий цикл: Розглядається, як виконується оновлення
стану гри, взаємодія об'єктів та імплементація ігрових механік.
9
ЧДТУ.24 2210.ООІПЗ
Аналізуючи ці аспекти, можна визначити оптимальний підхід до реалізації
гри, забезпечивши ефективність, зручність у використанні та задоволення від
користування грою "Finish".
1.2 Аналіз існуючих аналогів програми
Гра "Blocky Highway: Traffic Racing" є представником жанру аркадних
гонок зі стилізованою, блоковою графікою, яка використовується для створення
відчуття ретро-ігор. Ось деякі ключові аспекти цієї гри:
- геймплей: Гравець керує автомобілем, рухаючись вздовж безкінечної
дороги, яка заповнена іншими автомобілями, які рухаються у різних
напрямках . Основне завдання полягає в уникненні зіткнень із цими
машинами, проходячи між ними або виконуючи обхідні маневри;
- графіка : Стилістика гри включає блоковану графіку, що нагадує піксель
арт. Це надає грі особливий атмосферний вигляд, який відрізняється від
реалістичних симуляторів гонок;
- управління: Гравці керують автомобілем за допомогою екранних кнопок
або акселерометра (гіроскопа) пристрою. Вони можуть перем1щати
автомобіль вліво або вправо для уникнення перешкод;
- модернізації та бонуси : Гра пропонує можливість вдосконатовати
автомобілі та отримувати бонуси під час гри, що дозволяє гравцев1
підвищувати їх шанси на досягнення високих результатів;
- система очок і досягнень: Ігрова механіка базується на наборі очок за
кожне пройдене відстань та уникнуте зіткнення. Також є система
досягнень, яка мотивує гравщв до досягнення конкретних цілей або
виконання певних завдань.
Ці елементи роблять "Blocky Highway: Traffic Racing" ц1кавою ~грою для
шанувальників аркадних гонок, які цінують простоту управління, атмосферну
графіку і виклик від уникання перешкод на шляху досягнення рекордних
результатів. (Рис. 1.1 ).
10
ЧДТУ.24 2210 .ООlПЗ
Рисунок 1.1. - Інтерфейс програми Blocky Highway: Traffic Racing
1.3 Постановка задачі
Головною метою проекту є створення програмного забезпечення, що надає
користувачам зручний інтерфейс для управління та моніторингу трафіку на
дорогах міста. Основними задачами, які потрібно вирішити, є:
- розробка системи відображення поточного стану трафіку на графічному
інтерфейсі;
- інтеграція з джерелами даних про трафік для отримання актуальної
інформації.
реалізація функціоналу анал1зу трафіку для прогнозування побічІmХ
насшдюв дорожнього руху .
- забезпечення можливості користувачам зберігати і аналізувати історичні
дані трафіку.
- визначення критеріїв оцшки ефективності системи та здійснення 11
періодичної оцінки і покращення.
Ці задачі визначають напрямок розробки програмного продукту
встановлюють основні параметри для успішного завершення проекту.
11
ЧДТУ.24 2210.ООlПЗ
Висновок до розділу 1
У цьому розділі було проведено аналіз існуючих методів та засобів для
вирішення поставлених задач, а також оцінено наявні програмні аналоги. Було
сформульовано основні завдання проекту, які включають в себе розробку
програмного забезпечення для управління та моніторингу трафіку на дорогах
міста
Аналіз показав, що існуючі методи часто обмежені в можливостях і не
завжди відповідають потребам сучасного користувача. Програмні аналоги, хоча і
представляють певний інтерес, часто вимагають додаткових адаптацій та
модифікацій для використання в специфічних умовах нашого проекту.
У подальших розділах буде розглянуто детальюше проектування
програмного забезпечення, його реалізацію та тестування, що має на меті
створення ефективної системи управління та моніторингу трафіку, з врахуванням
сучасних вимог до надійності, швидкодії та зручності використання.
Такий висновок підсумовує здійснений аналіз і фокусується на основних
аспектах, які будуть розглянуті в наступних розділах вашої роботи.
12
ЧДТУ.24 2210.ООІПЗ
РОЗДІЛ 2 ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ ДОСЛІДЖЕНЬ У
ПРАКТИКУ ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
ШФОРМАЦІЙНИХ СИСТЕМ
2.1 Моделювання предметної області.
В даному підрозділі ми розглянемо такі діаграми: діаграма класів, діаграма
пакетів. Розглянемо ці питання більш детальніше.
2.1 .1 Предметна область моделювання. Модель предметної області. Словник
предметної області.
Предмет області моделювання це сукупюсть об'єктів, процес1в,
властивостей та їхніх взаємозв'язків у певній сфері діяльності, яка підлягає аналізу
та відображенню в моделі. Модеmовання предметної області дозволяє зрозуміти
та задокументувати структуру, функціонування та взаємодію елементів цієї
області, щоб забезпечити правильну розробку та впровадження програмних
систем .
При розробці програмного забезпечення гри "Finish" використовувалися
р1зю методи проектування та конструювання. Основними сутностями стали
автомобіль користувача (MyCar), дороги (Road) та транспортні засоби (TrafficCar),
які разом створюють динамічне ігрове середовище. Гравець керує автомобілем,
уникаючи зіткнень з іншими транспортними засобами. Було передбачено
механізми руху автомобіля, виявлення зіткнень та збереження рахунків гравців.
Створення доріг і транспортних засобів відбувається динамічно під час гри,
забезпечуючи постійний виклик для гравця. Використання Pygame забезпечило
якісне графічне представлення, а SQLite дозволило надійно зберігати та керувати
даними гравців. UМL-діаграми допомогли візуалізувати логіку гри та взаємодії
між об'єктами, що сприяло кращому розумінню та управлінню проектом
Модель предметної області
Гра "Finish" є інтерактивною грою, де гравець керує автомобілем,
намагаючись уникати зіткнень з іншими транспортними засобами на дорозі .
13
ЧДТУ .24 221 О.ОО І ПЗ
Модель предметної області для цієї гри можна описати через основні класи , Ух
властивості , методи та взаємодії між ними.
Властивості класів:
- i111age: Зображення автомобіля;
- гесt: Прямокутник, який обмежує область зображення на екрані;
- game_status: Поточний статус гри ("menu", "game", "game_over", "scores");
- sсоге: Очки гравця.
Методи:
- move(direction): Рух автомобіля у заданому напрямку;
- draw(screen): Відображення автомобіля на екрані;
crash(traffic_cars): Перевірка зіткнення автомобіля гравця з 1ншими
транспортними засобами.
Властивості road:
- image: Зображення дороги;
- rect: Прямокутник, який обмежує область зображення дороги ва екрані.
Методи:
- update(): Оновлення позиції дороги на екрані.
Властивості TrafficCar:
- image: Зображення транспортного засобу;
- rect: Прямокутник, який обмежує область зображення транспортного
засобу на екрані;
- speed: Швидкість руху транспортного засобу.
Методи :
- update(): Оновлення позиції транспортного засобу на екрані.
Методи Database:
- create db(): Створення бази даних і таблиці для зберігання рахунків.
- save score(score): Збереження рахунку гравця у базі даних.
- get_top_scores(limit=5): Отримання топових рахунків гравців з бази даних.
Взаємодії
Гра "Finish" включає наступні етапи взаємодії:
14
ЧДТУ.24 2210.ООlПЗ
- ініціалізація гри: Ініціалізація Pygaine, налаштування екрану,
завантаження зображень, створення об'єктів MyCar, Road та TrafficCar.
- основний ігровий цикл: Обробка подій користувача (натискання кнопок,
рух автомобіля), оновлення позицій об'єктів на екрані, взаємодія з базою
даних для збереження та відображення рахунків гравців.
Процеси:
- шщ1алізація гри: Налаштування екрану, завантаження зображень,
ініціалізація бази даних.
- гра "111enu11
: Відображення головного меню з кнопками "Start Garne",
11View Scores11 та "Exit11
•
- гра "gaine": Рух автомобіля гравця, створення нових дор1г та
транспортних засобів, відображення та оновлення рахунків гравця.
гра "gaine_over": Відображення повідомлення про заюнчення гри,
виведення та оновлення топових рахунків гравців.
- гра 11scores11
: Відображення топових рахунків гравців та кнопки 11Back11 для
повернення до головного меню.(Рис. 2.1 ).
© МуСаг
о lmage: Surface
о гесt: Rect @ Database
о game _s tatus: str І
о sсоге : int о create dbO l
о lnit (positlon: tuple. lmage: Surface) о save_sёore(score: int)
о move(direction: str) о get_top_scores(limit: lnt = 5): list І
о draw(screen: surface)
о crash(traffic_cars: Group)
~7 -\
1"-і -_- - ~ @ TrafficCar
©С Road __
о lmage: Surface
о image: Surface о rect: Rect
о гесt: Rect о speed: lnt
о _init_(image:Surface, position: tuple) о _ lnit_(lmage: Surface, position: tuple, speed: lnt) ]
о updateO о update()
Рисунок 2.1. - Модель предметної області (діаграма класів) до програмного
забезпечення мобільного застосунку гри «Finish»
15
-
ЧДТУ.24 2210.ООlПЗ
Словник предметної області :
MyCar (Мій автомобіль) включає зображення автомобіля гравця (image),
область на екрані, яку займає автомобіль (гесt), поточний статус гри (game_status)
(наприклад, меню, гра, гра закінчилася, перегляд рахунків) та рахунок гравця
(score).
Road (Дорога) представлена зображенням дороги (image) та областю на
екрані, яку займає дорога (rect).
TгafficCar (Транспортний засіб) має зображення транспортного засобу
(ішаgе ), область на екрані, яку займає транспортний засіб (rect), та швидкість руху
транспортного засобу (speed).
Database (База даних) включає метод для створення бази даних (create_db()),
метод для збереження рахунку гравця у базі даних ( save_ score( score)) та метод для
отримання топових рахунків гравців з бази даних (get_top_scores(limit))
Цей словник визначає основні класи і методи проекту, що допоможе краще
розуміти їхню взаємодію та функціональність у контексті гри "Finish".
@ MyCar
о image: Іmage
о rect: Rect
о game_status: str
о score: int
о move(directlon: str) : void
0 draw(screen: Suriace): void
о crash(traffic_cars: Group): void
г @ Database
-----
о create dbO: void
0 save s-core(score: int): void
о get_top_scores(limit: int): List[int]
):,-
© @ Trafficcar
Road
І~g;- 1 о image: lmage
~ image: о rect: Rect
0 rect: Rect
-і о speed: int
о щ~_dateO : void J о update(): void
Рисунок 2.2. - Словник предметної області
16
ЧДТУ.24 22 10.ООlПЗ
2.1.2 Елементи моделювання предметної області
Гравець (Рlауег) включає ім'я гравця або ідентифікатор (Name), поточний
рахунок гравця під час гри (Sсоге) та поточний статус гравця (Game Status), який
мо же бути "меню" , " гра " , " гра заю·н чилася" тощо.
Автомобіль гравця (MyCar) представлений графічним зображенням
автомобіля гравця (lmage) та областю на екрані, яку займає автомобіль (Rect). Він
має методи для переміщення автомобіля вліво або вправо (Movement) та
визначення зіткнення автомобіля з іншими об'єктами, наприклад, трафіком
(Co1lision)
Дорога (Road) має графічне зображення дороги (lmage) та область на екрані,
яку займає дорога (Rect). Вона включає метод для переміщення дороги вниз по
екрану та перезавантаження, коли вона виходить за межі екрану (Update) .
Транспортний засіб (TrafficCar) представлений графічним зображенням
транспортного засобу (Image) та областю на екрані, яку займає транспортний засіб
(Rect). Він має швидкість руху транспортного засобу (Speed) та метод для
переміщення транспортного засобу вниз по екрану та його видалення, коли він
виходить за межі екрану (Update).
База даних (Database) включає метод для ініціалізації бази даних для
зберігання рахунків гравців (Create Database ), метод для зберігання рахунку гравця
у базі даних (Save Score) та метод для отримання найкращих рахунків гравців з
бази даних (Get Тор Scores).
2.1.3 Робоча область моделювання
"Робоча область моделювання" містить такі ключові аспекти:
Доменна модель і словник домену:
Доменна модель: схематичне зображення основних сутностей, їх атрибутів
і зв'язків у вашому проекті "Finish".
Словник домену: визначення основних терм1юв ПОНЯТЬ, ЯКІ
використовуються у вашій програмі.
Елементи доменної моделі:
17
ЧДТУ.24 2210.ООJПЗ
Гравець (Player): представлення гравця в rpt з його ім'ям, рахунком та
поточним статусом гри.
Автомобіль гравця (MyCar): зображення , розміщення на екраю, рух та
зіткнення автомобіля.
Дорога (Road): візуальне представлення дороги, оновлення її положення на
екраю .
Транспортний засіб (TrafficCar): зображення, розташування та швидюсть
рул.гу транспортного засобу.
База даних (Database) : функції для створення, збереження та отримання
. .
рахунюв гравщв.
Схема бази даних:
Структура таблиці для зберігання рахунюв гравцш з полями для
ідентифікатора і рахунку.
Інші компоненти системи:
Музика та звук: ініціалізація та відтворення музики в грі.Графічні ресурси.
,. н-.t: erяct: s """'t:І,
@ . rv,ycar
1-J Ігnаgе : 1гnege
□ ,·ect: : R ect:
0 gaгne_~tг.t:u !:. 1 Str· Іr,g
□ sсоге: Іпt
ь rт,ove(dlгect:lon : St:гlng) : ~old
С) draw(scгeeп: s u,-race) : vold
о cгash( t:гattlc_ca,·s: G 1·oup) : volct
/-c ~•~ t ,·ols ~ :nterects w,.i~
~ Road І ~ тratf~~c~ -
а 1,-nage: 1rnage .. ;:; ~~~t:~~~~~age
п r·ect:: Re ~ t: . о s peed : Іnt
о updat:e (} : vold ~ '-ІPdat:e ( ): ·vol d
Рисунок 2.3 - Модель предметної області до програмного забезпечення
мобільного застосунку гри «Finish »
18
ЧДТУ .24 22 1О .ОО l ПЗ
2·2 Формування та аналіз вимог
В даному підрозділ і ми розглянемо дшграму прецедент1в та напишемо
вимоги до створюваної програми . Розглянемо ці питання більш детальніше.
2.2.1 Формування вимог до програмного забезпечення. Первинні і детальні
вимоги. Вимоги замовника і розробника. Функціональні та нефункціональні
вимоги.
Вимоги замовника зазвичай описують, що система повинна робити, а
вимоги розробника деталізують, як це буде реалізовано. Функціональні вимоги
визначають конкретні функції, які система повинна виконувати, такі як введення
даних, обробка інформації та генерація звітів. Нефункціональні вимоги
стосуються якості системи, включаючи продуктивність, безпеку, надійність і
зручюсть використання.
ПЕРВИННІ ВИМОГИ:
основний інтерфейс і взаємодія користувача:
головне меню з кнопками "Start Game", "View Scores", "Exit".
вікно гри з назвою "Finich ".
штерактивне керування автомо бш. ем за допомогою клав1ш "L е ft" та
"Right".
відображення рахунку гравця під час гри.
графічний вміст:
зображення автомобіля гравця (Mercedes) і інших транспортних засобів.
зображення дороги, яка автоматично змшюється шд час руху.
фонове зображення меню і екранів гри.
ігровий процес:
генерація доріг та транспортних засобів у випадкових м1сцях 1з
випадковою швидкістю.
виявлення зіткнень між автомобілями та обробка завершення гри у разі
зіткнення.
збереження рахунку гравця у базі даних після кінця гри.
база даних:
19
ЧДТУ .24 221 О.ОО 1П З
створення та підтримка бази даних SQLite для збереження рахунюв
гравцш.
запис нових рахунків після завершення кожної гри.
отримання топових рахунків для відображення на екрані.
продуктивність:
оптимізація ігрового циклу для досягнення частоти оновлення екрану не
менше 60 кадрів в секунду .
ефективне використання пам'яті та процесорних ресурсів для стабільної
роботи гри.
ДЕТАЛЬНІ ВИМОГИ
головне меню повинно містити кнопки "Start Game", "View Scores" 1
"Exit"·
'
- відображення гри має включати назву гри, рахунок гравця та кнопки
керування "Left" і "Right";
вікно "View Scores" показує топ-5 рахунюв гравцш з можливІстю
повернення до головного меню за допомогою кнопки "Back".
графічний вміст:
- зображення автомобіля гравця (Mercedes) з можливістю обертання на 90
градусів для руху вгору і вниз;
різноманітні зображення транспортних засобів (traffic cars) з рІзною
швидкістю і напрямком руху;
- фонове зображення дороги, яка автоматично змшюється шд час руху
гравця.
- ігровий процес:
- генерація нових доріг і транспортних засобів з випадковою швидкістю і
позицією під час гри;
- визначення зіткнень м1ж автомобілями обробка заюнчення гри з1
збереженням рахунку гравця;
- шдрахунок очків гравця за час гри з кожним усшшним уникненням
зпкнень.
20
ЧДТУ .24 22 1О .ОО І ПЗ
база даних:
- створення бази даних SQLite з таблицею для збереження рахунків гравців;
запис нових рахунків після завершення кожної гри з можливістю
відображення тоn-5 рахунків на екран і "View Scores";
- оптимізація запитів до бази даних для швидкого доступу до рахунюв
гравців та їх сортування за спаданням.
продуктивність і тестування:
- оптимізація головного ігрового циклу для досягнення стабільної частоти
оновлення не менше 60 кадрів в секунду;
тестування програмного забезпечення на р1зних платформах для
забезпечення сумісності та стабільності гри;
- виявлення і усунення помилок у коді, яю можуть вплинути на
функціональність гри або її продуктивність.
ФУНКЦІОНАЛЬНІ ВИМОГИ
- основний інтерфейс:
кнопка "Start Game" шщ1ює початок гри з відображенням автомобіля
гравця на середині екрану;
- відображення поточного рахунку гравця на верхній частині екрану під час
гри;
- кнопки "Left" і "Right" для керування автомобілем гравця вліво і вправо
шд час гри.
- графіка та звук:
- анімація руху доріги транспортних засобів, що з'являються зверху
екрану і рухаються вниз;
- звукові ефекти для зіткнень автомобілів та інших важливих подій під час
гри.
- геймплей та управління:
- генерація нових доріг та транспортних засобів через певний інтервал часу
під час гри;
21
ЧДТУ.24 22 1О .ОО І ПЗ
- обробка зіткнень аотомобілін rpont\}І . і11mими транспортними засобами і
відображення еt<рану "Gamc Ovci·"·
'
- збереження рахунку rpaotiя пі сля заоср111сн11я гри і виnслсння найкращих
результатів на екрані "Vic\v согсs".
- управління базою даних:
- запис і зчитування рахункіn rраnців у базу даних SQLite після кожної гри ;
- відображення тоn-5 рахунків гравців на екран і "View Scores" У порядку
спадання.
- керування гри:
- кожлив1сть рестарту гри шсля "Game Over" за допомогою кнопки
"Restait" ·
'
- вих~д 1з гри за допомогою кнопки "Exit" з головного меню.
- ці функціональні вимоги визначають основний функціонал, який повинен
бути реалізований у вашому проект~ "Finich", щоб забезпечити
повноцінний і задокументований ігровий досвід для користувачів.
НЕ ФУНКЦІОНАЛЬНІ ВИМОГИ:
- продуктивність:
- час відгуку: Система повинна миттєво реагувати на дії користувача, такі
як керування автомобілем гравця та перехід між різними екранами гри;
- час завантаження: Завантаження нових елементів гри, таких як дороги і
транспортю засоби, повинне бути плавним 1 не сприйматися
користувачем.
- надійність:
- стійкість до помилок: Система повинна коректно обробляти всі можливі
сценарії, включаючи зіткнення автомобілів і збереження даних у базі
даних;
- ВІДновлення шсля вІДмови : У випадку ВІДМОВИ або аварії гра повинна
відновлюватися з точки останнього збереження.
- безпека:
22
ЧДТУ .24 22 І О .ОО І ПЗ
- захист персона.nь1 , . .. •
-tих даних: Інформація про rpam(iв (наnриклал, 1 хн~
рахуюп1) повинна 3 6 . .
ср~гатися і оброблятися n ілпов ідно до законодавства
про захист персональних даних .
- ергономіка :
- доступн~сть для t<ористувачів : tнтерфейс користувача повинен бути
інтуїтивно зрозум · • . .. .
ІЛим 1 легким для нав1гац11;
- кольорова палітра: Використання кольорів і шрифтів повинно бути
легким для читання і приємним для очей користувача.
- масштабованість:
- шдтримка р1зних роздільностей екрану: Гра повинна правильно
відображатися на різних пристроях з різними роздільними здатностями
екрану.
- ці нефункціональні вимоги визначають параметри, які не є безпосередньо
пов'язані з функціональністю гри, але визначають якість, ефективність і
користувацький досвід системи "Finich ".
2.2.2 Формування вимог за допомогою діаграми прецедентів
Гравець (Player) включає ім'я гравця або ідентифікатор (Name), поточний
рахунок гравця під час гри (Score) та поточний статус гравця (Game Status), який
може б ути " меню ", "г ра ", "г ра заю.н чилася" тощо.
Автомобіль гравця (MyCar) представлений графічним зображенням
автомобіля гравця (lmage) та областю на екрані, яку займає автомобіль (Rect). Він
має методи для переміщення автомобіля вліво або вправо (Movement) та
визначення зіткнення автомобіля з іншими об'єктами, наприклад, трафіком
(Collision).
Дорога (Road) має графічне зображення дороги (Image) та область на екрані,
яку займає дорога (Rect). Вона включає метод для переміщення дороги вниз по
екрану та перезавантаження, коли вона виходить за межі екрану (Update) .
Транспортний засіб (TrafficCar) представлений графічним зображенням
транспортного засобу (Image) та областю на екрані, яку займає транспортний засіб
(Rect). Він має швидкість руху транспортного засобу (Speed) та метод для
23
,
ЧДТУ.24 22 10.00 1П З
переміщення транспорти
ого засобу вниз по екрану та йоrо видалення , коли він
виходить за межі екрану (Update).
База даних (Database) вк . . . . ...
лючає метод для 1нщ1 ал 1зац11 6 ази даних )J)ІЯ
зберігання рахунків гравц·1 8 (С 1.e ate Database), .
метод для збер1rання рахунку rравuя
)' базі даних (Save Sсоге) та ~ · ·
метод для отримання наикращих рахунюв гравщв з
бази даних (Get Тор Scoi·es).(Pиc. 2.4).
Flnlch Trafflc Racer
І.._ -E->dt / - ____( B;k to ~J\enu
~ -·· ---- - - --- .,,,._ ·- .- .. ./
с _______ --~ (' Dlsplay Тор Scores_ _ __)
View Scores --~ -- - ___ .- ~ - - -.- -.
/~ ------- __,,., (_ crash Detectюn _)
Player .. -- - ~ r - -- -··
C.~ rt Gam_ ;~ -~ ------,,.,...._ ~ _ Р_Іау Ga_me ~ --~~ve Left/Riv '
Рисунок 2.4 - Діаграма прецедентів до програмного забезпечення
мобільного застосунку гри «Finish »
2.3 Проектування логічної структури програмного комплексу
В даному підрозділі ми розглянемо такі діаграми: діаграма класів, діаграма
пакетів. Розглянемо ці питання більш детальніше.
2.3 .1 Діаграма класів
Клас MyCar , що представляє автомобіль гравця. Включає атрибути для
зображення автомобіля, його положення на екрані, поточний статус гри та рахунок
гравця. Методи включають переміщення автомобіля, відображення його на екрані
та перевірку на зіткнення з іншими автомобілями.
Клас Road, що відповідає за відображення дороги на екрані гри. Включає
атрибути для зображення дороги та його положення на екрані. Метод update()
використовується для оновлення положення дороги під час її руху по екрану.
Клас TrafficCar, який представляє транспортні засоби, що рухаються по
дорозі. Містить атрибути для зображення транспортного засобу, його положення
24
ЧДТУ.24 22 10.ООtПЗ
J-{a екраю та швидкість М
РУХУ . етод update() використовується для оновлення
nоложення транспортного засобу .
на екран~
Клас Database, який відповідає за роботу з базою даних. Містить методи
для створення бази даних, збереження рахунку гравця у базі даних та отримання
топових рахункш гравців.
Зв'язки між класами :
- MyCar <-> ТгаffісСаг: MyCar може взаємодіяти з TrafficCar для виявлення
зпкнень;
- МуСаг <-> Database: MyCar може взаємодіяти з Database для зберігання та
отримання рахунків гравців;
Road <-> MyCar: Road може взаємодіяти з MyCar для відображення на
дорозі та генерації трафіку;
- TrafficCar <-> Road: TrafficCar може взаємодіяти з Road для відображення
на дороз1.
Ці класи і 1х взаємодії формують основу для реалізації гри "Finich" У
середовищі програмування Python та фреймворку Pygame. (Рис. 2.5):
© МуСаr
@ Road о image: surface
о rect : Rect
о lmage: Surface о game_status: str
о rect : Rect □ score: int
о update(): vold о move(dlrectlon: str): void
о draw(screen: Surface): void
І
~'""'""'""'
) .... 1 .., .,
-- -
@ TrafficCar
-- © Database l
о lmage: Surface
□ rect : Rect о create dbO: void
□ speed: Іnt о save_s-core(score: lnt): vold
о get_top_scores(limit: lnt): Llst[lnt]
~ e(.!:_v~ -
Рисунок 2.5 - Діаграма класів до програмного забезпечення мобільного
застосунку гри «Finish »
2.3 .2 Діаграма пакетів
Діаграма пакетів (Package Diagram) в UML (Unified Modeling Language) є
одним із видів структурних діаграм, які показують організацію та структуру
системи на рівні пакетів. Пакет в UML є контейнером для елементів моделі, таких
25
ЧДТУ.24 22 10.ООІПЗ
як класи, компоненти або інші паt<ети, і використовується для групування
nов'язаних елементів разом .
Діаграма включає наступний вміст
Два пакети: "Gаше Coшponents" і "Database". Пакет "Game Components"
містить класи MyCai·, Road, і TгafficCar, які представляють основні компоненти
вашої гри. Пакет "Database" містить клас Database, який відповідає за взаємодію з
базою даних для збереження і отримання рахунків гравців. (Рис. 2.6).
Game Con1pone1,ts
--- @ МуСаг
© Road о image: Suriace
о rect: Rect
□ image: Suriace о game_status: str
о rect: Rect о score: lnt
о updateO: vold о move(direction: str): void
о draw(screen: Suriace): void
о crash(traffic_cars: Group): void
Database
@ TrafficCar @ Database
о image: Sшface 1
о rect: Rect о create db(): void
о speed: int о save sёore(score : int) : void
update(): void о get top_scores(limit: int): Ust[intJ
о 1
Рисунок 2.6 - Діаграма пакетів до програмного забезпечення мобільного
застосунку гри «Finish »
2.4 Архітектурне проектування
В даному підрозділі ми розглянемо такі діаграми: діаграма компонентів,
діаграма розгортання. Розглянемо ці питання більш детальніше.
2.4.1 Діаграма компонентів
Діаграма компонентів "Finish"
Компонент "Гра" включає всі ігрові компоненти, які відповідають за логіку
гри та її відображення.Класи:
MyCar: Клас, що представляє автомобіль гравця;
26
ЧДТУ .24 22 1О .ОО І ПЗ
Road: Клас для об'єктів дороrи у r·pi ;
TгafficCai·: Клас для об'єктів трафіку ;
Gюпе: Основний клас гри, який управляє іншими компонентами
взаємощє з користувачем через введення та відображення .
Містить усі класи та методи, необхідні для зберігання та отримання рахунків
гравu~в.
Класи:
- Database: Клас, що відповідає за взаємодію з SQLite базою даних;
scores: Таблиця бази даних для зберігання рахунків гравців.
Інші компоненти
Зображення та звуки: Включає всі зображення автомобілів, доріг та звукові
ефекти, що використовуються у грі . (Рис. 2. 7).
© Мусаг
о image: Іmage
о гєсt: Rect © Database
о game_status: String
о score: Іnteger о create dbO
о _init_(position: tuple, image: Іmage) І о save score(score: lnteger)
о move(direction: String) о get_top_scores(limit: lntege г): Ust<lnteger>
о draw(screen: Surface)
о crash(traffic_ cars: Group) І
; .. ~,,,1,
1 . '
@ Road © TrafficCar
а image: Іmage
о image: Іmage
rect: Rect а rect: Rect
о
о speed: Іnteger
о _init_(image: Іmage, posltion: tuple)
update() о _lnit_(image: Іmage, position: tuple, speed: Іnteger)
о
-- --- о update()
Рисунок 2. 7 - Діаграма компонентів до програмного забезпечення мобільного
застосунку гри «Finish »
2.4.2 Розгортання програмно~ системи на апаратних засобах. Діаграма
розгортання.
У цій діаграмі:
27
ЧДТУ.24 2210.ООІПЗ
_ "Useг's ОІПрL1tе1·"
представляє комп'ютер користувача, на якому
запускається nаша гра;
_ "РуgашеАрр" - це ваше до •
даток на основ, Pygame, який містить компонент
Pygame для графіки та взаємодїt'
3 користувачем;
- "f'i.нicl1 ,db" - це файл бази даних SQLite, який використовується вашою
програмою для зберігання рахунків гравців;
"iшages 11" - це тека з зображеннями, використовуваними в грі ;
- "111рЗ/уоuг_шusіс_ fіlе.шрЗ" - це файл музики, який відтворюється в грі ;
"SQLite Database Serveг" - це віртуальний чи фізичний сервер баз даних
SQLite, до якого ваше додаток звертається для роботи з базою даних.
Ця діаграма ілюструє, як ваша програмна система розгортана на апаратних
засобах, включаючи комп'ютер користувача та необхідні файли та сервер баз
даних.(Рис. 2.8).
Компоненти програми
Код, який м1стить ініціалізацію Pygame, створення графічного ігрового
інтерфейсу, управління грою, обробку подій, взаємодію з базою даних SQLite для
збереження рахунків гравців, ініціалізацію зображень та інші важливі елементи.
Цей код містить усі необхідні компоненти для імплементації ігрового середовища,
включаючи графіку, звук, базу даних та інтерактивне управління.
User's Computer
Load, 9am, maqos
о r· ~ 3 --,_
Pygame l ~ ch.f j imagesl/
l_l
шuш SQL qu,nes
SQLlle Dala ase Se1ve1
V
~fi~ch.~ j
р 2.8 _ . ртання до програмного забезпечення мобільного
исунок Д~аграма розrо
застосунку гри «Finish »
28
ЧДТУ .24 22 1О .ОО І ПЗ
2.5 Моделювання по .
ВСДІІІКІt СІІСТСМІІ
В даному nідроз · .
д~щ ми розглянемо діаграму діяльностj , діаграму
послідовності , діаграму ком · ... .
унщацн I діаграму скінченного автомата. Розглянемо
ui питання більш детальніше.
2.5 .1 Діаграма діяльності
Діаграма діяльності ст . ..
варена для пояснення ключових аспекпв вашо1 гри
"finicl1" у контексті дипло ..
мно~ роботи. Ось детальне пояснення кожного елементу
діаграми:
Запуск гри: Це початкова точка всієї програми. Після запуску ініціалізується
Руgаше, налаштовується екран гри, створюється база даних для зберігання
рекорд~в та завантажуються усі необхідні зображення.Ініціалізація Pygame,
Налаштування екрану, Створення бази даних, Завантаження зображень: Ці
активносп виконуються при запуску програми для належного налаштування
середовища гри І шдготовки необхідних ресурсів.
game_status = 'menu': У цій гілці програми перевіряється статус гри . Якщо гра
перебуває в режимі меню, відображається головне меню гри, де користувач може
обрати "Start Game", "View Scores" або "Exit".
game_status = 'game': Якщо гра у стані активності, генеруються дороги і трафік,
управління автомобілем гравця, обробка зіткнень та підрахунок очків. Також
відображуються кнопки для управління автомобілем.
game_status = 'game_over': Якщо гра завершується, на екрані відображається
повідомлення "Game Over" та показуються найкращі рекорди. Користувач має
можливість натискати "Restart" для початку нової гри.
game_status = 'scores': Якщо користувач обирає перегляд рекордів у головному
меню, на екрані відображається список найкращих рекордів. Існує кнопка "Back",
яка дозволяє повернутися до головного меню.
Обробка подій кліків мишею: Ця частина діаграми показує, що програма
очікує подій кліків мишею в залежності від поточного стану гри. Наприклад, при
натисканні на кнопки у головному меню виконуються відповідні дії.Ця діаграма
допомагає уявити логіку програми "Finish", зокрема взаємодію користувача з
29
ЧДТУ.24 2210.ООlПЗ
інтерфейсом, управлінням гравця, обробкою подій та відображенням різних
еJ<ранів гри. Вона є корисним інструментом для розуміння та пояснення основних
фу»кцій вашого програмного продукту в рамках дипломної роботи. (Рис. 2.9).
2.5.2 Діаграма послідовності
Пояснення діаграми:
Ініціалізація та налаштування: Користувач ініціалізує Pygame, налаштовує
екран гри, створює базу даних SQLite для зберігання рекордів і завантажує
необхідні зображення та звуки.
Головне меню: Користувач бачить головне меню гри, де він може вибрати
"Stat1 Game", "View Scores" або "Exit". Програма очікує дій користувача.Вибір
"Staгt Game": Якщо користувач обирає "Start Game", гра переходить у режим
активності. Протягом гри генеруються дороги і трафік, користувач управляє
автомобілем, перевіряється наявність зіткнень і зберігаються рекорди .
...,_ ,.., ......... ~
р исунок 2 .9 - дt. агр ама д~·яльності до програмного забезпечення мобільного
застосунку гри «Finish »
30
1ДТУ .24 22 1О . ОО І І 1'3
Вибір "View Scoгes"· Я
~ · 1<що користушР t обирас "Vicw Scorcs",
відображаються найкращі
рекор)\И , і снує можливістr, ттсрнутися до головного
меню.
внбір "Exit": Якщо корист
увач обира - "Exit" , 11рограма 1акриваєтьсн .
Ця діаграма посл ідо • .
вност1 вщображає nза модію користувача з вашою
грою та внутр1шню логіку програми, я1<а включає генерацію графічних
елементів, обробку подій і збер~'ган
ня даних.
І user [ МуСаr Road TrafficCar Font tJ.enuBackgrour.d1mage
'---
,..,i-.11smsau111 Pygan1e
налаwтуDаІ<НR скра1tу
~ ocpc10,q б;;зи дан,~,
заоан,аже~ зоf>ражен1, ►
'),,
За11;~нтаження зображення фону меню ►
Б1д1 вор@мнR 11,узи,и
с, норення of>'t•1y І~уСа,
foOP J (Го~о■но моноо)
ВщоЬраженнА фону w.ен,о
в,дображення ,екtту 'f,n,ch їraff,c Racer'
----j,.
В1,аоЬраження кноnон 14Stan Game", 'Vie,...,_, Scores•t, .,Exrt"
~•куоання кл1к 1 u w.иwею -
~ 1Вм61t> · s1.,1 G•mo' I
.~ , та,усу гр1111а •..g,__am--e'-•_ ____ ----------------~
1001> J (Гр•J
r~нерац,я дор1г
►
Ге><ерац,я трафі~у
оч,~)•~аннм к11 ік ін w.ишею (уt1раRІІІ >< нм}
),
Пере"іщєнни ав тоио6і11 н
Перееірк а 3ІТКНЄНЬ
Збережен11n рекорду
в,дображеннn •·Game Ovcr"
_о тримання та 01добраме1111я 11аикращW< рекорд 1е
~,до6;.,;;,ж Qння к ноп,v. "i\ist;;,rt'
..... ..................................................... ,_ .. !.'.,. ............................. ................................ ........ .
rв.~1ii·;v1ew sёо,~,;у·
_о,трv.иа11 11я та 01добр~мс 1 111n Іtиикращих рекордів
. ~•добр~ня кноп•и •васk" --- -►
[Dм6іі, " [мit•J
Закриття прсграми
Рисунок 2.1О - Діаграма послідовності до програмного забезпечення мобільного
застосунку гри «Finish »
31
'l ) lT .24 22 10.001111
2.5.3 Діаграма ком ніюн\ії
Ініціалізація та нnлnшт н.,1111я: Корн 'тупн•1 ініціал і ·1ус Pygamc, 11tJJ 1яr11тoвyr
еJ{ран гри, творю ба· даних i j t J\ЛSІ '-\б рі1 ·н11 rн1 р кор;tі в і ·1ашнrт~1жус
необхідні зображення тй зn 1 н .
Головне меню: Кори туn.1ч ба'Інт1"' , -олов11е меню r ·ри , де він може вибрати
"Staгt Gаш " "Vie,v Scoгes" або" "' Xit". Програма очі ку дій користувача.
Вибір "Staгt Gаше": Якщо користувач обира "Start Game", гра переходить
у режи 1 активності. Протягом гри генеруються дороги і трафік, користувач
уІІРавляє автомобілем, перевіряється наявність зіткнень і зберігаються рекорди.
Вибір "Vie,:v Scoгes": Якщо користувач обирає "View Scores",
відображаються найкращі рекорди, існує можливість повернутися до головного
меню.
Вибір "Exit": Якщо користувач обирає "Exit", програма закривається .
Ця діаграма відображає взаємодію користувача з вашою грою та взаємодію
програмних компонентів, включаючи Pygame, SQLite і основні об'єкти гри.
(Рис2.11).
_с,_
с,-.~;.•,.=•..,•
)~• 1Pf"-•J.:i;;o,., _
►
a.r.V->P-•-.i ~-• ·~ v: ~·. ••'"'• s: с,н', 'f.>1.' ►
~ LІ"Іf "ИІІІ '•••J
]м~t~~}ІР,, ... '~••щ•
~v,.1
Гt...,~•.:1• 1.Q~
~ -'' --
CN,-~),1.,,.,.,.c~irc~,-•J
f~L••• инwоf• .. .,.
. nr.,i.,-. ;,, .......
:ttJtІot••~•t,J:f
Іе"іf ·'Ііt• ~•,.•·І
o,r.,,. ... .,. , . .. ,.щ...,•-~ ..,.,;.цt1"1t•rt1~;;•
"" P)'Qilnt . so..u І
с
Рисунок 2.11 - Діаграма комунікації до програмного забезпечення мобільного
застосунку гри «Finish »
32
1Jl,TY.24 22 І О.(Ю І f 11
2.5.4 Діаграма кі11чс11ного автомату
Гр а "Fініс11
11 n очинаєт1, я з u.щ ображснш, r·олошюr ·о меню, ;~с корис·, ува' І
мо)І(е обрати опції "Stai1 Ga111c" для початку , ·rи , "Vicw Scorcs" дл~r rrcpcгmr;1,y
рекордів або "Exit" для завершення ,~ри. Після обрання "Start G ame" гра
переходить у режим "Playi11g" . Якщо автомобіль з іткнувся, гра переходи-п, у стан
''Ga.111e о,,ег"' де користувач може обрати "Restart", щоб повернутися до головного
меню.(Рис. 2.12).
Menu
Stг.rtGame
Playing
~ c,ash,d Sta" Gam,
~
GameOver \ГievlScores
Main/v1enu k
ExltGame
І
Рисунок 2.12 - Діаграма скінченного автомату до програмного забезпечення
мобільного застосунку гри «Finish »
33
ч;,ту .24 221о .оо I r1 1
}-1а основ1 анал1зу та внко1 нспннrя рі ·нюмш rі тrrих J(i a r ·paм у другому роrщілі
днnлом1-ю1 роботи буJ10 вняnлс,ю,
ЩО ПОІІИ uажливим інструментом д;rя
моделювання , аналізу та nроектуuання і грових систем . Діаграми діяльност1 ,
nослідовності, комунікації та скінченного автомату допомогли чітко визначити
функціональність, взаємодію компонентів та управління станами у грі "Finich ".
вони сприяли покращенню розуміння процесів 8 системі та забезпечили
ефективність розробки програмного продукту.
34
ЧДТУ.24 2210.ООІПЗ
РОЗДІЛ З РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО
ЗАБЕЗПЕЧЕННЯ-
3.1 Розробка програмного комплексу
У цьому розділі ми детально розглянемо наступн1 аспекти програмно~
системи "Fш' 1.с h" :
Структурна схема програмної системи: опис компоненпв системи та їх
взаємодій для кращого розуміння її архітектури .
Функціональна схема програмної системи: анал1з функцій можливостей
системи, взаємозв'язки між її складовими частинами.
Логічна схема системи
через д1аграму діяльності: моделювання
послідовностей операцій та взаємодій у системі для наочності і розуміння її
роботи.
Опис програмних компонентів: детальне вивчення складових програмного
забезпечення, їх функціональність та взаємодію.
Розробка інтерфейсу користувача: проектування та реалізація графічного
інтерфейсу для зручної взаємодії з користувачем під час гри.
Це дозволить нам глибше зрозуміти структуру, функціональність та
взаємодію компонентів програмної системи, що є важливим для успіпnюї
розробки та вдосконалення гри.
З .1.1 Обrрунтування вибору засобів реалізації
Обгрунтування вибору засобів реалізації програмної системи "Finich"
базується на декількох ключових аспектах, які враховують технічні можливості,
ефективність та зручність для розробки і підтримки гри:
Мова програмування Python: Python вибраний через свою простоту, високий
рівень абстракції, широкий вибір бібліотек та фреймворків, що сприяє швидкій
розробці. Він також відомий своєю простотою в освоєнні, що робить його
відмінним вибором для студентських проектів.
Бібліотека Pygame: Pygame обрана для створення графічного інтерфейсу та
обробки введення в грі . Вона надає потужні можливості для реалізації ігрової
35
-
ЧДТУ.24 22 10.001ПЗ
механіки, включаючи роботу з графі кою, . оуком і rшсдснrrям, rr(o с r<ритичним для
усліmної реалізації гри про рух no дороз і .
Система управління ба ам
и даних QJ_, itc: SQLitc nикористовується для
зберігання та управління rраrщевнми рекордами . Вона є легкою у встановленні,
має низью вимоги до ресурсів і підтримується багатьма мовами програмування,
включаючи Pytl1011.
Pygюпe.fi·eetype для роботи з текстом: Цей модуль Pygame дозволяє
ефективно виводити текст на екран, що є необхідним для відображення різних
повідомлень і інтерфейсів гри .
Простота інтеграції 1 розширюваності: Обрані засоби дозволяють легко
інтегрувати нові функції покращення до гри, що важливо для подальшого
розвитку проекту.
Ці обгрунтування показують, що обрані засоби є оптимальними для
досягнення мети проекту - створення функціональної і цікавої ігрової системи з
дотриманням вимог дипломної роботи.
3 .1.2 Опис структурної ( функціональної) схеми
Структурна (функціональна) схема програмної системи "Finich" включає в
себе основні компоненти та їх взаємодії, необхідні для реалізації функціональності
гри. Основні елементи цієї схеми включають:
Головний ігровий цикл (Main Game Loop):
Ініціалізація ігрових параметрів: Установка параметрів гри, таких як розміри
екрану, налаштування звуку, та ініціалізація Pygame.
Обробка подій (Event Handling): Взаємодія з користувачем через обробку
подій миші та клавіатури для управління автомобілем і навігації по меню.
Оновлення гри (Game Update): Оновлення стану об'єктів гри, таких як рух
доріг, вивід трафіку, перевірка зіткнень і підрахунок балів.
Відображення (Rendering): Відображення графіки, текспв та шших
візуальних елементів на екрані за допомогою Pygame.
Компоненти гри:
36
ЧДТУ .24 22 1О .ОО І ПЗ
Автомобіль кор истувача (МуСат): Клас, що представляє автомобіль,
v-ерований гравцем. Він в1·дпов· · ·
.І' ~дає за рух I з1ткнення.
Дороги (Road): Об'єкти, які відображають дорогу і рух на ній .
Трафік (Tгaffic): Автомобілі, які рухаються по дорозі та взаємодіють з
гравцем.
Інтерфейс користувача (Useг Inte1-face ):
Меню (Мепu): Головне меню гри 3 кнопками для старту, перегляду рекордів
і виходу з гри.
Екрани рівнів (Game Screens) : Екрани, що відображають стан гри: гра, гра
завершена, перегляд рекордів.
Система зберігання та відображення рекордів:
SQLite база даних: Для зберігання і вибору рекордів користувачів.
Функції зберігання і завантаження рекордів: Забезпечення функціоналу
зберігання і завантаження найкращих рекордів користувачів.
Ця структурна схема демонструє основні компоненти та їх взаємодн,
необхідні для реалізації гри "Finich", що дозволяє керувати автомобілем, уникати
зіткнень, підраховувати бали та відображати поточний стан гри і рекорди гравців.
(Рис. 3.1 ).
Модуль налаштувань завантажує та зберігає налаштування.
Файловий менеджер займається завантаженням і збереженням зображень, а
модуль обробки зображень виконує застосування фільтрів, зміну розмірів та
роботу з кольоровою гамою.
Вимоги замовника зазвичай описують, що система повинна робити, а
вимоги розробника деталізують, як це буде реалізовано. Первинні вимоги
надаються замовником і окреслюють загальну мету та бажані функції
системиФункціональні вимоги визначають конкретні функції, які система
повинна виконувати, таю як введення даних, обробка інформації та генерація
звітів. Нефункціональні вимоги стосуються якост1 системи, включаючи
продуктивність, безпеку, надійність і зручність використання.
37
ЧДТУ.24 221 О.ОО 1П З
finirl1 тгaffk Rмег
@ GamcConstantS
о SCREEIJ 1/IDlH: nt
11 SCREEN)i:ІGЧТ: nt
11 !JACKG1ШlX'IO_COi.OR: tt1ple · - ----.
_..-• о FONТ: pygDmCJreetypc.Font
.~--- ___ __..- о SPAI/IN_ROAD _Т ІІ,Е : lnt
~--~ ,.,----· 11 SPA'/IN_T RAFFICJIME: int
\---
/ ..
/ ~
//.- г
@r.-ty'Car
@ Da:ObaseMonager u image: pygame.Sur1ace
dh(): \ oid Ь:: ___ © Іn1agcloadcr а rect: pygame .Rect
о game _s tatus: str
о сгеаtе 1 \
0 58\'С s-corc(scorc: nt): void r1 score: int
о oet rop scorєs(limk.: L1t): List!lnt] о MyCar(posюon : tup!e, image: pygame.Sшf~ce)
l _. -- - - ------· о movcldircction: str): vdd
о draw(screen: pygame.Su'face): void
о crash(traffic_cars: pygame.sprite.Gtoup): 111:1id
©G ameFunctions j
-----
о draw аІО: void
о spawn_road(): void
о spawn_traffкO: vold
/о""''~-'""''' wid
г---------J~___,__,__~
© @ TrafficCar
Ro;;d
І а i~"'ag~:-pygame.S~~ce - · - - ·-- □ lmage: pygame.Surface
; □ rect pygame .Rect о r~ct: pygame.Rect
о speed: int
І о Road(lmage: pygame.Su~ace, position: tuple)
vold с TrafficCa~image: pygame.Sшface. position: tuple, speed: int)
о updгteO:
о updateO: void
Рисунок З .1 - Структурна схема програмної системи до програмного
забезпечення мобільного застосунку гри «Finish »
Функціональна схема програмної системи
Ініціалізація Pygame та створення бази даних.
Основний ігровий цикл з перевіркою подій, оновленням стану гри та
відображенням елементів гри.
Обробка різних станів гри: меню, гра, гра завершена, відображення
результатів.
Відповідь на події користувача, такі як початок гри, перегляд результатів,
перезапуск гри або вихід з гри. (Рис. З .2).
38
ЧДТУ.24 22 1О .ОО І ПЗ
т
,j,
, . ....t . r,. ....... ..
+ ,j,
tv•'•Ч ()t,І' ..
.- .. , Q ~ ..ч • , , , .. ,, 1е ;,...,,. ,.,,,.
t1r,,1 ..., .. ,,• ... .... ,1 ..., ..
,j,
І о,,,. ,., ое"'~ • • n- • nt , І
..
р,., ............... .. - ..... .
~ ► n-... .. ,.,~,,. ....... ... - ,.,_.. .. "''"" '~ ___,. ..
l 0•• 1~180\' """' "' "" + О-♦рІ еу f ,-f" 4,.,,. ,. t
f ".....,_ С•• fJ .. ,,1 .... с., . ..... о-,. .. ":ІtІ"••""
.,
c;t,, ,. ...q - ':•' •·•.,, , ....... ......
u .... .. с,. . ~ ""-........ ... ~
i
!
С:оІІІ•••" O•l•ft·•"
~
( СІ ••ІІО• St_•lu ~ Іо О•"'• 0,,,,.t )
.,, ·,
І.._ Upd•І ~ S,:; o,• ,
_ ..,
Рисунок З .2 - Функціональна схема програмної системи до програмного
забезпечення «Finich»
З .1.3 Опис логічної схеми системи
Показано послідовність дій, коли MyCar взаємодіє з іншими об'єктами У
системі, такими як Road, TrafficCar і SQLiteDB. Кожен крок показує активацію та
деактивацію об'єктів під час виконання відповідних методів та взаємодій.Рис(З.3)
[~ І R o ad ] І T raff~ccar І І SQLl~eDB І
1
spawn_гoad( ) : .: .:
.r.~.~-~. .c.r.<!.~.t-~-~--о : :
s awn tra ff1c.O : :
_t r aff1c _c ar spa~nod. .... ..... IJ
save score(scoг:C } , ,
--~~-?-~~ -1!-~."!.Іі!.?. ... ( ... ......... .. ) ......... .......... Д
Рисунок З.З - Опис логічної схеми системи до програмного забезпечення
мобільного застосунку гри «Finish »
З .1.4 Розробка бази даних
База даних SQLite, що використовується для збереження результатів
гри. Ось опис структури бази даних, яка використовується у вашому коді:
Структура бази даних
39
ЧДТУ.24 22 10.ООІПЗ
У вашій базі да •
них 1·111.1 cl1.db використооується одна таблиця scores, яка
містить інформацію про
результати гри.
Таблиця scoгes
Ця таблиця зб ·
ер1гає результати гри кожного гравця.
id: унікальний ідентиф' ~
1катор запису (первиннии ключ)
sсоге: кількість очок , на б рана гравцем ш·д час гри
Опис функцій для роботи з базою даних
Ви вже маєте наступні функції для роботи з базою даних у вашому коді:
cгeate_db(): створення бази даних та таблиці scores, якщо вони ще не
існують.
save_ score(s core) : збереження резуль татів гри в таблиці scores.
get_top_scores(limit=S): отримання топ-5 результатів гри з таблиці scores.
Ці функції дозволяють зберігати дані про гравців та їх результати, а також
отримувати найкращі результати для відображення у грі.
З .1.5 Розробка інтерфейсу користувача
"Finish" інтерфейс користувача реалізований за допомогою бібліотеки
Pygame і включає декілька ключових елементів, які взаємодіють з користувачем
під час гри. Ось опис того, як це реалізовано в вашому коді:
Основні елементи інтерфейсу користувача
Головне меню:
- В головному меню користувач може обрати між стартом гри, переглядом
рекордів або виходом з програми;
- Є кнопки для цих дій: "Start Game", "View Scores", "Exit";
Використовується текстовий елемент для відображення назви гри ("Finich").
Гра:
Під час гри користувач керує автомобілем за допомогою кнопок "Left" і
"Right";
Відображується поточний рахунок гравця;
При зіткненні з іншими автомобілями гра завершується, і відображається
екран "Game Over".
40
►
1 І )1Т · 4 2 І О .ОО 11 l' J
кран " ~111 ,,ei·":
Пі .пя аверщ ння І •
l н нщоброж1н .. ,·,, ,,, ·r ·1<ст "( ,11rri • ( )v ·r"
р зультатів;
Кнопка "Re taii"
ДОЗВОJІЯ .• J ()' 110 1 ,ати 11ову r·py 1 1ІО'ІНТІ<у.
Екран "Тор соге - "·
При перегляді рек • .
орд~в в~добража п,ся тorr-5 r1с·Jу111,татін гrrшцін;
Кнопка "Back" п
овертає користувача до rо11ов1101 ·0 мс11ю;
Графічні елемент I· . .
и ститзащя використоnуют,>ся зображення щrя
автомобіля гравця , інш . . . .
их автомо 61тв, фонш I кнопок;
Тексти відображаються . . . .
за допомогою шрифту, що шщ1ал 1зується 1
бібліотеки Pygame;
Кнопки стилізовані за допомогою прямокутників з текстом усередині;
Звуковий супровід додатково інтегрований звуковий ефект для музики,
яка грає безперервно під час гри.
Рисунок З .4 - Вигляд інтерфейсу до програмного забезпечення мобільного
застосунку гри «Finish »
3.1 .6 Опис розробки програмних компонентів
"Finish" програмні компоненти розроблені для забезпечення різних аспектів
гри, включаючи управління автомобілем, генерацію доріг і трафіку, управління
грою та взаємодію з базою даних. Ось опис головних програмних компонентів
вашого проекту:
41
ЧДТУ .24 22 1О .ОО І ПЗ
- компонент МуСаг
Цей компонент пр едставля rолооний об' кт управл іння гравця. Він має
1етоди для руху автомобіля , відслідко вує з .п кнення з .1 ншими автомоб.ш ями та
уrrравляє станом гри.
Методи:
_ init_ (self, position ' imag e )· Ію.ц ~.а шз. ація автомобіля з вказаною позиuією і
30браженням.
111ove(self, dil·ection)·· р ух автомоб1.л я вш.в о або вправо.
drю1/(self, screen) · Ві до 6 раження автомобіля на екрані.
crash(self, traffic- cars)· П ерев1. рка з.п кнення з іншими автомобілями.
компонент Road
Цей компонент представля є дорогу в гр1.. В1. н аю.м ує рух дор1.r 1. повторно
використовується для створення ефекту безкінечної дороги
Методи:
_init_(self, image, position): Ініціалізація дороги з вказаним зображенням і
позид1єю.
update(self): Оновлення позиції дороги та перевірка її виходу за межі екрану.
компонент TrafficCar
Цей компонент відповідає за автомобілі, що рухаються по дороз1. Він
. . . . . .
генерується з випадковою позиц1єю 1 швидюстю 1 аюмується на екран~.
Методи:
_init_(self, 1mage, position, speed): Ініціалізація автомобіля з вказаним
зображенням, позицією і швидкістю;
update(self): Оновлення позиції автомобіля та його видалення з групи при
виході за межі екрану;
функції для управління грою
Ці функції включають створення доріг і трафіку, відображення результатів
гри, керування станом гри та взаємодію з базою даних.
функції:
42
ЧДТУ .24 22 І О . ОО 11 С~
spa,\гt1_ гоаd (): твоµ ння новнх . .
С}( 'ЮМІІJІЯf)ІН J\Of)IТ. ЛШJ ефекту fіе'Н< інсrrної
дороги:
spa,\'11_ tтaffic(): тnо1 ення 1- tовнх екзсм rшярів трафіку ·1 яигrалковимн
характери тиками;
sa,,e sсоге( sсоге) : Збе еж
- Р ення рахунку гравця в базі даних після завершення
get_top_sc01·es(liшit=5): Отримання топ-S
результат1в з 6 ази даних для
відображення на екрані.
нтерфейс користувача
Цей компонент відповід ає за в·щ ображення р1· зних стаю·в гри , включаючи
r оловне меню ігровий екран е "G
J ' , кран ame Over" та рекорди гравщ·в .
Методи :
Відображення тексту, кнопок та шших графічних елемент1в на екраю з
використанням бібліотеки Pygame.
ініціалізація та управління грою
Основний ігровий цикл, який обробляє введення користувача, оновлює стан
гри та відображає графіку на екрані.
Основний цикл: Обробка введення, оновлення об'єктів гри, відображення
стану гри на екрані та взаємодія з користувачем через мишу або клавіатуру.
Цей опис враховує основні компоненти, яю ви використовуєте для
створення вашої гри "Finich ", і допомагає зрозумпи їхню взаємодію та
функціональність в межах вашого проекту.
3.2 Тестування системи
В даному підрозділі ми проведемо такі тестування до створеної програми:
модульне тестування, інтеграційне тестування, системне тестування та
приймальне тестування. Розглянемо ці питання більш детальніше.
3.2.1 Модульне тестування
Модульне тестування - це процес перевірки окремих програмних процедур
(модулів) і підпрограм, що входять до складу програм. Модульне тестування
проводиться безпосереднім розробником і дозволяє перевіряти всі внутр1шю
43
. Ч;-t~Т .24 22 10.()())Jl 'J
.,-руктури 1 потокн даннх, У с кожному мо . ..
обкн Jtym . І {єи nи;t тестування є •rас·гнною eтarry
fозр ·
Процес nроведеl-{1-(Я
-модуль,юго тестуваття
Тестування вашої про
б rрамної системи "Finish" є важливою rастиною
проuесу розро ки оскільки
воно дозволяє переконатися, що всі компоненти
rтnаuюють правильно і відп •
"r о в ~дають вимогам проекту . Ось кілька ключових
аспектів тестування вашої гри :
модульне тестування:
модульне тестування в .
ключає перев1рку окремих компонентів програми:
тести для MyCar:
перев1рка руху автомобіля .
втво та вправо.
впевнен1сть, що автомобіль .
не виходить за меж1 екрану.
виявлення зіткнень з іншими а .
втом0 61лями.
тести для Road:
перев1рка правильності анімації руху доріги.
перев~рка правильності повторного використання дороги для створення
ефекту безкінечної дороги.
тести для TrafficCar:
перевірка руху автомобіля трафіку вниз.
впевненість, що автомобіль трафіку видаляється з гри після виходу за межі
екрану.
інтеграційне тестування
інтеграційне тестування виконується для перев1рки взаємодії м1ж
компонентами:
тестування генерації доріг та трафіку:
впевненість, що нові дороги правильно створюються згідно з таймером.
перевірка правильності генерації трафіку з випадковими характеристиками.
тестування взаємодії з базою даних:
перевірка збереження рахунку гравця після завершення гри.
перевірка отримання топ-5 результатів з бази даних.
44
ЧДТУ.24 22 10.ОО ІП
системне тестування:
системне тестування включає перевірку всієї системи як єдиного цілого
тестування головного ігрового
циклу :
впевнешсть, що гра коректно реагує на введення користувача (миша або
клавіатура) .
перев~рка коректності відображення графіки і стану гри на екрані.
тестування переходів між станами гри:
впевнеюсть, що гра правильно перемикається між головним меню, ігровим
екраном, екраном "Game Over" та екраном рекордів.
вашдац~я вимог
впевнеюсть, що програма відповідає вс1м вимогам вашого проекту,
включаючи функціональність, взаємодію з користувачем та обробку даних.
вщладка
виявлення і виправлення помилок, які можуть виникнути під час тестування,
зокрема зіткнення об'єктів, неправильне управління ресурсами чи проблеми з
взаємодією з бібліотеками.
3.2.2 Інтеграційне тестування
Інтеграційне тестування важливе для перев1рки взаємодії м1ж р1зними
компонентами вашої програмної системи "Finich ". Ось кілька ключових аспектів,
які варто врахувати під час цього виду тестування:
генерація доріг та трафіку
перевірка коректності генерації доріг та трафіку у грі:
перевірка генерації доріг:
впевненість, що нові дороги правильно створюються згідно з таймером.
перевірка правильності повторного використання дор1ги для створення
ефекту безкінечної дороги.
Перевірка генерації трафіку:
Впевненість, що трафік (інші автомобілі) генерується з правильними
випадковими характеристиками (позиція, швидкість, зображення).
взаємодія з базою даних
45
ЧДТУ .24 22 10 .ООJПЗ
перев~рка коректності збереження та отримання даних з бази даних:
збереження рахунку гравця:
впевнеюсть, що рахунок гравця правильно зберігається в базі даних після
завершення гри.
отримання топ-5 результатів:
перев~рка правильності отримання топ-5 результатів гравців з бази даних ;
взаємод1я головного ігрового циклу;
тестування правильності взаємодії між головним меню, ігровим екраном,
екраном "Ga me О ver" та екраном рекордів:
перехід між станами гри:
впевненість, що гра правильно перемикається м1ж різними станами
(головне меню, ігра, гра закінчена, рекорди) відповідно до дій
користувача.
Взаємодія з користувачем
Перевірка коректності реакції гри на введення користувача (миша або
клавіатура):
Введення управління
Перевірка відповідного руху автомобіля вліво або вправо відповідно до дій
користувача.
Відладка
Виявлення 1 виправлення помилок, яю можуть виникнути шд час
інтеграційного тестування, зокрема зіткнення об'єктів, неправильне управшння
ресурсами чи проблеми з взаємодією з бібліотеками.
Ці аспекти інтеграційного тестування допоможуть переконатися, що
програмна система працює стабільно та відповідає усім вимогам, що були
встановлені для проекту "Finish ".
З .2.3 Системне тестування
Системне тестування є важливим етапом для забезпечення якосп вашої
програмної системи "Finich ". Ось кілька ключових аспектів системного
тестування, які варто врахувати:
46
.....
ЧДТУ .24 22 1О .ОО І ПЗ
Функціональне тестування
Функціональне тесту · · ...
вання спрямоване на перевірку правильносп реал1зац11
функціональних вимог системи:
головне меню:
Перевірка коректного відображення головного меню з опц1ями "Start Game",
"View Scores" та "Exit".
Переконання, що вибір опцій за допомогою миші або клавіатури працює
правильно.
Ігровий процес:
Впевненість, що автомобіль користувача рухається вшво вправо,
використовуючи введення миші або клавіатури.
Перевірка генерації доріг та трафіку, зокрема їх руху та знищення поза
межами екрану.
Екран "Game Over":
Перевірка відображення екрану "Game Over" при зіткненні автомобіля
користувача з іншими автомобілями.
Впевненість, що реалізована можливість рестарту гри.
Рекорди гравців:
Перевірка коректного відображення та сортування топ-5 рекордів гравців.
Взаємодія з базою даних
Перевірка коректності взаємодії з базою даних для збереження та отримання
рахунків гравців
Збереження рахунку гравця
Перевірка правильності збереження рахунку гравця в базі даних шсля
закінчення гри.
Отримання топ-5 результатів:
Перевірка коректності відображення та сортування топ-5 результатів
гравців.
Взаємодія з користувачем
47
ЧДТУ.24 2210.ООlПЗ
Перевірка вщповідності інтерфейсу користувача вимогам зручностt та
jJ-J'f)'J°TИBHOCTЇ :
Управління гравцем
Перевірка правильності відгуку гри на введення миші або клавіатури для
керування автомобілем гравця.
Переходи між екранами:
переконання, що переходи між головним меню, ігровим екраном, екраном
"Gаше Over" та екраном рекордів працюють без помилок.
Відпадка та обробка помилок
Забезпечення ідентифікації та виправлення помилок, які можуть виникнути
під час системного тестування:
легування помилок
впевненість, що система виводить повідомлення про помилки або винятки з
належною інформацією для подальшого відладження.
стійкість до помилок
перевірка стійкості гри до непередбачуваних сценаріїв введення або ЇНІШіХ
негативних умов.
Відповідність вимогам
Перевірка того, що програмна система відповідає всім вимогам, визначеним
у специфікації та вимогах до проекту "Finish ".
Ці аспекти системного тестування допоможуть переконатися, що ваша
програмна система працює стабільно та відповідає усім потребам користувачів.
3.2.4 Приймальне тестування
Приймальне тестування є важливим етапом у впровадженні програмної
системи "Finich". Це фінальна перевірка перед передачею системи замовнику. Ось
ключові аспекти приймального тестування:
Перевірка відповідності вимогам
Перевірка того, що програмна система відповідає всім вимогам, які були
визначені в специфікації та вимогах до проекту:
48
ЧДТУ.24 22 10.ООІПЗ
перев1рка правильності реалізації вс1х функціональних вимог,
включаючи головне меню, ігровий процес, управління гравцем,
генерацію доріг та трафіку, обробку зіткнень і відображення рекордів
гравщв.
Вимоги до екранів і інтерфейсу :
переконання, що інтерфейс користувача відповідає вимогам щодо зручності
та інтуїтивності використання.
тестування на реальних даних
забезпечення коректної роботи системи з реальними даними, включаючи:
збереження і відображення результатів гравців:
перевірка, як система зберігає та відображає результати гравців у базі даних.
стійкість до навантаження:
тестування системи на стійкість шд час інтенсивного геймплею,
забезпечення оптимальної продуктивності та відсутності витоків ресурсів.
тестування на різних платформах
перев1рка сумісності програмної системи з р1зними операційними
системами та апаратними платформами:
Сумісність з ОС:
тестування на р1зних верс1ях операційних систем (наприклад, Windows,
MacOS, Linux) для впевненості у сумісності та правильному відображенні ігрових
елементів.
відповідність стандартам якості
перевірка відповідності програмної системи встановленим стандартам
якості та безпеки:
безпека даних:
переконання, що персональні дані гравців захищені та обробляються згідно
3 вимогами захисту особистих даних.
якість коду та стабільність :
аналіз якості коду, перевірка наявності коментарів, відсутність помилок та
витоків пам'яті, що можуть вплинути на стабільність системи.
49
,,,,...
ЧДТУ.24 2210.001 ПЗ
виконання фінального тестування під час передачі системи замовнику :
документація та підтримка:
Перевірка наявності 1 актуальності документації до системи, включаючи
інструкції 3 встановлення та користування, а також умови надання підтримки
після передач~.
Ці аспекти приймального тестування допоможуть забезпечити, що
програмна система "Finich" відповідає усім вимогам та очікуванням замовника
перед її офіційним впровадженням.
Таблиця З.І
Тестування
Вид тестування Опис Аспекти тестування
Модульне тестування Перевірка окремих - Тести для MyCar: рух
програмних модушв. вліво/вправо, межі екрану,
Проводиться розробником зіткнення.
під час етапу розробки.
- Тести для Road: анімація
руху дороги, ефект
нескінченної дороги.
- Тести для TrafficCar: рух
вниз, видалення
автомобілів за межами
екранv.
Інтеграційне тестування Перевірка взаємодн МІЖ - Генерація дор1г:
компонентами системи. створення за таймером,
повторне використання.
- Генерація трафіку:
випадкові характеристики
(позиція, ШВИДКІСТЬ,
зображення).
- Взаємодія з базою даних:
збереження рахунку,
отримання топ-5
результатів.
-Перехід між станами гри:
головне меню, ігровий
екран, "Game Over"
'
рекорди.
50
ЧДТУ.24 2210.ООІПЗ
Продовження таблиці 3.1
- Реакція на введення
користувача (миша,
клавіатvра).
Системне тестування Перевірка всієї системи як - Функціональність :
єдиного цілого. головне меню, ігровий
процес, "Game Over",
_І>екорди.
- Взаємодія з базою даних:
збереження та отримання
_0ез_у_л ьтат1в.
- Зручність інтерфейсу:
відповідність інтерфейсу
вимогам користувача.
- Перехід між екранами:
коректна робота
головного меню, гри,
"Game Over" та екрану
_І>_екордш.
- Легування помилок:
стійкість ДО
непередбачуваних
сценаріїв введення.
- Стійкість гри:
п.р одукт. ивюсть та
вщсутюсть ВИТОКІВ
ресурсів.
Приймальне тестування Фінальна перевірка перед - Відповідність вимогам:
реал1зац1я функціоналу,
передачею системи
зручюсть інтерфейсу,
замовнику. генерація доріг та трафіку,
обробка зпкнень,
рекорди.
- Тестування реальних
даних: збереження та
відображення результатів
гравців.
- Якість та безпека: аналіз
коду, захист персональних
даних, стабільність
роботи.
Сумісність з ОС:
тестування на Windows,
MacOS, Linux.
51
ЧДТУ.24 22LО.001ПЗ
Продовження таблиці З . І
Документація: наявн1сть
інструкцій для
встановлення та
використання, умови
підтРИМКИ.
З.З Приклади впровадж
еноrо програмного комплексу
Впровадження програмного комплексу "Finich" може мати різні варіанти, в
залежності від специфіки проекту та цільової аудиторії. Ось декілька прикладів
впровадження програми:
Мобільна платформа (Android/iOS):
Ціль: Підвищення доступності гри для широкого кола користувачів, зокрема
на мобільних пристроях.
Характеристики: Адаптація управління до сенсорних екранів, оптимізація
для різних роздільних здатностей, інтеграція з магазинами додатків (Google Play,
Арр Store).
Веб-версія для онлайн гри:
Ціль: Забезпечення можливості грати в гру без необхідності завантаження
додатку.
Характеристики: Розробка інтерфейсу користувача на основі WebGL або
інших веб-графічних технологій, інтеграція з соціальними мережами для обміну
результатами.
Стаціонарна версія для ПК
Ціль: Призначена для гравців, які використовують персональні комп'ютери.
Характеристики: Оптимізація графічних налаштувань для р1зних
конфігурацій ПК, підтримка клавіатури та миші для управління автомобілем.
Ігрові консолі (PlayStation, ХЬох):
Ціль: Перенесення гри на гральні консолі для максимального використання
rеймпаду та відчуття іммерсії.
Характеристики : Адаптація ігрового процесу до контролера консолі,
оптимізація для високої швидкості кадрів, використання графічних двигунів
52
-
ЧДТУ.24 2210.ООІПЗ
консолей.
VR-версія для віртуальної реальності
Ціль : Створення іммерсивноrо досвіду водіння автомобіля з використанням
\/R-окуляр1в.
Характеристики: Розробка інтерфейсу, який підтримує ЗО-моделювання,
і нтеракти вн 1с ть вщтворення ауді о-ефектів для створення реалістичного
середовища.
Кожен з цих варіантів впровадження має сво~ унікальні особливості і
вимоги, але вони всі спрямовані на забезпечення високої якості і задоволення
користувачів від гри "Finich ".
Меню: Гра починається з головного меню, де гравці можуть обрати старт
гри, перегляд високих балів або вихід з гри.рис(З.5)
Рисунок З.5 _ Вигляд інтерфейсу до програмного забезпечення мобільного
застосунку гри «Finish »
53
ЧДТУ.24 22 10 .ООІПЗ
Запис рахунків: Рахунки записуються за допомогою SQLite, що дозволяє
гравuям переглядати своі' результати та п'ять найкращих рахунків в меню високих
балів.рис(З.6)
Ігровий процес: Гравці керують автомобілем, уникаючи інших машин на
дорозі. Мета - триматися як можна довше без зіткнень.рис(З.7)
р ИСуНОК 3 .6 - в ИГЛЯД ·lH терфейсу до програмного забезпечення мобільного
застосунку гри «Finish »
54
...
ЧДТУ .24 221О .ОО 1П З
Рисунок 3.7 - Вигляд інтерфейсу до програмного забезпечення мобільного
застосунку гри «Finish »
55
ЧДТУ.24 2210.00\ПЗ
Результати тестування
Висновок до розділу З, який охоплює розробку програмного комплексу
"f1'1 1 isl1" ' містить оціНК)' пр оведено1.. роботи з точки зору проектування, розробки
та тестування програмної системи . Ось ключові аспекти які можна включити до
'
uьoro висновку:
Було проведено детальний аналіз вимог до програми, що дозволило чітко
визначити функціональні та нефункціональні вимоги.
Створено детальні моделі домену, вимог та архітектури системи,
включаючи д~аграми класів, пакетів, компонентів, а також діаграми поведінки
(активності, послідовності, комунікації).
Розробка програмного комплексу:
Реалізовано ключові функції гри, такі як управління автомобілем, генерація
доріг і трафіку, управління станами гри та обробка подій користувача.
Використано Python та бібліотеку Pygame для реалізації графічного
інтерфейсу, обробки введення користувача та управління анімацією.
Тестування програмної системи :
Проведено функціональне тестування, що охоплює перевірку коректності
геймплею, реакції на управління та інтерфейс.
Інтеграційне тестування включало перев1рку взаємодії компоненпв
системи, таймерів і анімації.
Відповідність вимогам було перевірено через випробування, що забезпечило
відповідність функціональних і технічних вимог.
Розробка програмного комплексу "Finish" була усшшною, відповідаючи
встановленим вимогам та досягаючи поставленої функціональності.
Отримані результати дозволяють впевнено стверджувати про стабільність та
ефективність програми у відповідності з її цілями та завданнями.
Продемонстровано, що програмний комплекс готовий до подальшого
використання та розширення, наприклад, з метою покращення графіки, додавання
нових функцій або підтримки інших платформ.
56
ЧДТУ .24 22 І О.ОО 1П З
Uей висновок відображає ключові аспекти роботи над програмним комплексом
"Finish" і підкреслює успішність проекту відповідно до поставлених завдань і
вимог.
57
ЧДТУ.24 2210.ООlПЗ
В11сновок до розділу З
Під час створення та тестування програмного продукту було виконано всі
необхідні кроки для забезпечення високої якості розробленого програмного
забезпечення. Програма пройшла ретельну перевірку на коректність роботи,
внявлення та виправлення помилок. Намагалися забезпечити стабільність і
правильність роботи всіх її компонентів, включаючи перевірку взаємодії між
окремими модулями програми, що дозволило виявити та усунути можлив1
проблеми у їх зв'язках.
Також проведено загальну перев1рку всієї програми, щоб оцінити 11
готовність до реальної експлуатації. На завершальному етапі програма була
оцінена незалежними користувачами та організацією, яка відповідає за інсталяцію
та підтримку, що підтвердили її зручність у використанні, функціональність та
готовність до впровадження .
Отже, під час тестування забезпечено високу яюсть та надійність
розробленого програмного забезпечення. Програма успішно пройшла всі етапи
перевірки , що підтверджує їі готовність до використання та впровадження у
практичну діяльність.
58
►
ЧДТУ.24 221 О .ОО 1П З
висновки
На протязі цієї роботи був роз ро б ленииV I• усш• шно впровадженииv у життя
програмний продукт під назвою "Finich ". Основними етапами розробки були
nроеJ<ТУвання архпектури програми, розробка коду з використанням мови
програмування Pytbon та бібліотеки Pygame, створення графічного інтерфейсу
користувача та бази даних для збереження рекордів гравців.
Програма включає в себе наступні ключові компоненти :
Графічний інтерфейс: Візуальне оформлення гри, включаючи основний
екран гри, меню, кнопки управління та відображення результатів.
Ігрова механіка: Реалізація управління автомобілем гравuя, генерація доріг
та іншого трафіку, виявлення зіткнень та підрахунок очок.
Система збереження рекордів: Використання бази даних SQLite для
збереження та відображення найкращих результатів гравців.
Процес розробки включав ітеративний ПІДХІД до вдосконалення
функціональності та інтерфейсу гри. Кожен компонент програми був тщательно
перевірений на коректність роботи та взаємодію з іншими частинами системи.
У ході тестування програмного забезпечення було забезпечено високу якість
і надійнjсть продукту. Були проведені різні види тестів, включаючи модульні,
інтеграційні та системні тести, що дозволило виявити та усунути помилки перед
завершенням розробки.
Загалом, програмний продукт "Finish " готовий до використання та має
потенціал для подальшого розвитку і покращення. Він не лише відповідає
поставленим вимогам, але й надає користувачам цікаву ігрову динаміку та
можливість конкурувати за кращі результати.
59
ЧДТУ .24 22 l О.ОО І ПЗ
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1 Python - [Електронний ресурс]. - Режим доступу: https://freehost .com.ua/ukr/
faq/wiki/chto-takoe-jazik-programmiгovanija-python/
2 Бібл іотека Pillow (PIL) Python - [Електронний ресурс] . - Режим доступу :
l1ttps://metanit.com/python/recipes/2. l .php
З Бібліотека OpenCV - [Електронний ресурс] . Режим доступу :
https://itmaster.biz.ua/programrning/vision/opencv.html
4 Пакет Tkinter [Електронний ресурс] . Режим доступу:
l1ttps://docs.python.org/uk/З/library/tkinter.html
5 Занурення в процес модульного тестування - [Електронний ресурс] . - Режим
доступу : https://www.zaptest.com/uk/%D 1% 89%D0%BE-%D 1% 82%D0%B
0¾ D0¾ BA% D0%B5-%D0%BC%D0%BE%D0%B4%D 1% 83%D0%BB%D 1
%8C%D0%BD%D0%B5-%D l %82%D0%85%D 1% 81¾ D 1% 82%D І %83%D0
%8 2%D0%B0%D0%BD%D0%BD%D 1% 8F-%D0%83% D0%BB%D0%B8%
D0 %В 1% D0%BE%D0%BA% D0%B5-%D0%B7
6 Налагоджувач debuggers - [Електронний ресурс] . - Режим доступу:
https://uk.wikipedia.org/wiki/Haлaroджyвaч
7 Інтрегроване середовище розробки - [Електронний ресурс] . - Режим
доступу: https://uk.w ikipedia.org/wiki/1н тегроване _ середовище_ розробки
8 Особливості PyChann - [Електронний ресурс] . - Режим доступу:
https://itpro.u a/product/j etbrains-pycharm/?tab=description
9 Особливості Visual Studio Code - [Електронний ресурс]. - Режим доступу:
https://uk. wikipedia.org/wiki/Visual_ Studio_ Code
10 Діаграми UML та їхнє значення - [Електронний ресурс]. - Режим доступу :
https://e vergreens.com. ua/ua/articles/uml-diagrams.html
11 HTML (мова розмітки гіпертексту)- [Електронний ресурс] . - Режим доступу :
https://uk.w iki pedia.org/wiki/НTML
12 Коротко про CSS [Електронний ресурс] . - Режим доступу :
https ://kiev.itstep.org/Ьlog/what-is-css-and-why-does-a-web-developer-need-it
60
ЧДТУ.24 2210.ООІПЗ
13 Особливості Node J. s й • . . u ]
· ого сум1нснпь та функцюнал - [Електроннии ресурс •
- Режим доступу: https://scand.com/ru/company/blog/node-js-features-uses-and
benefits-of-development/
14 Бібліотека PyQt [Електронний ресурс]. Режим доступу :
https://uk.wikipedia.org/wiki/PyQt
15 libjpeg бібліотека для роботи з JРЕG-зображень - [Електронний ресурс]. -
Режим доступу : https://ru.wikipedia.org/wiki/Libjpeg
16 Бібліотека libjpng для роботи з РNG-зображень - [Електронний ресурс]. -
Режим доступу : https://ru.wikipedia.org/wiki/Libpng
17 libtiff бібліотека для роботи з ТІFF-зображень - [Електронний ресурс]. -
Режим доступу: https://ru.wikipedia.org/wiki/LibTIFF
18 Все про обробку RA W-зображень за допомогою бібліотеки libraw -
[Електронний ресурс]. - Режим доступу: https://www.libraw.su/
19 Опис та функціонал програми Photoscape - [Електронний ресурс]. - Режим
доступу: https ://photoscape.ruprograms.com/
20 Огляд програмного забезпечення ByFunky- [Електронний ресурс]. - Режим
доступу : https://www.befunky.com/
21 Методичні рекомендації до підготовки кваліфікаційної роботи бакалавра
для здобувачів вищої освіти зі спеціальності 121 «Інженерія програмного
забезпечення» усіх форм навчання [Текст] /Укл.: Голуб С.В. , Заспа Г.O.,
Півень О.Б. Катаєва Є.Ю., Салапатов В.І. , Метелап В.В., Олексюк В .В .; М
во освіти і науки України.
61
ДОДАТОJ( А
ЗАТВЕРДЖЕНО:
Зав . кафедри ПЗАС
п ф. Голуб С. В.
ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ МОБЬІЛЬНОГО ЗА СТОСУНКУ ГРИ
« FIN1SH»
Специфікація
482. ЧДТУ.242210-01
Листів 2
Розробник Стрічевський І .В.
Керівник Первунінський С.М.
Черкаси 2024
482. ЧДТУ .242210-01 2
Позначення
Найменування Примітка
~482, У.242210 12-01 Лістинг програми
~ТУ.2422 1 0 34-01 Інструкція користувача
482_qДТУ.24221 О 90-01 Графічні матеріали
----
--
-
~
~
...___
62
ДОДАТОК Б
ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ МОБЬІЛЬНОГО ЗАСТОСУНКУ ГРИ
« FINISH»
Лістинг програми
482.ЧДТУ.242210 12-01
Листів 9
Розробник Стрічевський І.В.
Черкаси 2024
82,ЧДТУ.242210 12-01 2
Файл: main.py
irnport rando111
irnport sqliteЗ
import руgаше
import руgаше. freetype
# Ініціалізація Руgаше
руgаше.іпіtО
# Налаштування екрану
SCREEN_ W1DTH, SCREEN_HEIGHT = 600,800
screen = pygaшe.display.set_mode((SCREEN_W IDTH, SCREEN_HEIGHT))
pygame.display.set_ caption('Finich Traffic Racer')
# Колір фону
BACKGROUND _ COLOR = (О, О, О)
# Шрифт
FONT = pygame.freetype.Font(None, 36)
# Ініціалізація звуку
pygame.mixer.initO
# Таймери для створення доріг та трафіку
SPA WN _ ROAD _ ТІМЕ = pygame. USEREVENT
pygame.time.set_timer(SPA WN_ ROAD _T lME, 1000)
SPA WN_TRAFFIC_ТIME =p ygame.USEREVENT + l
pygame. time.set_ timer(SP А WN_ T RAFFIC_ ТІМЕ, 1000)
# Створення бази даних
def create_dbQ:
conn = sqliteЗ.connect('finich.db')
с = conn.cursor()
63
82· чдТУ .24221 О 12-0 1 3
c.execute("'CREATE TABLE IF ОТ EXISTS scores (id INТEGER PRIMARY КЕУ, score
rNTEGER)"')
conn.commit()
conn.close()
defsave_score(score):
conn = sqliteЗ.connect('finich.db')
с = conn.cursor()
c.execute('INSERT INTO scores (score) у ALUES (?)', (score,))
conn.cornmitO
conn.close()
def get_top_ scores(limit=5):
соnл = sqliteЗ .connect('finich .db')
с =c onn.cursor()
c.execute('SELECT score FROM scores ORDER ВУ score DESC LІМІТ ?', (limit,))
top_scores = c.fetchall()
conn.close()
retum [score[0] for score in top_scores]
defload _image(filename, size, angle=0):
image = pygame.image.Ioad(filename)
image = pygame.transform.scale(image, size)
if angle != О:
image = pygame.transform.rotate(image, angle)
retum image
class MyCar:
def_ init_ (self, position, image):
self.image = image
self.rect = self.image.get_rect(c enter=position)
self.game_ status = 'menu'
self.score = О
def move(self, direction):
64
82,чдТУ.242210 12-01 4
if direction = 'left':
self.rect.x -= 4
elif direction = 'rigl1t':
self.rect.x += 4
self.rect.x = шах(О, шiп(self.rect.x, SCREEN _ WIDTH - self.rect.width))
def draw(self, screeп) :
screen.blit(self.iшage, self.rect)
def crasl1( sel f, traffi с_ cars):
if ану( car.rect.colliderect(self.rect) for car in traffic_ cars):
priпt('Gaшe over')
self.game_status = 'game_over'
save_ score(s el f.score)
class Road(pygame. sprite. S pri te):
def _init_(self, image, position):
super()._init_()
self.image = image
self.rect = self.image.get_rect(topleft=position)
def update(s elf ):
self.rect.y += З
if self.rect.top >= SCREEN_HEIGHT:
self.rect.y = -self.rect.height
class Тr afficCar(pygame. spri te. Spri te):
def _init_(self, image, position, speed):
super()._ init_ ()
self.image = image
self.rect = self.1. mage.get_rect (с enter=position)
self.speed = speed
def update( self):
self.rect.y += self.speed
65
82-ЧдТУ.242210 12-01 5
ifself.rect.top > SCREEN_ HEIGHT:
self.kill()
def dra\v _all():
forroad in road_group:
road.updateO
screen.blit(road.image, road.rect)
traffic_ cars_ group. update()
traffic_ cars_group.draw(screen)
my _c ar.draw(screen)
def spawn_ roadQ:
road_bgl = Road(road_image, (О, О))
road_bg2 = Road(road_image, (О, -SCREEN_HEIGHT))
road _group.empty()
road _group.add(road_ bg 1, road_ bg2)
def spawn_ traffic():
position = (random.randint(40, SCREEN_ WTDTH - 40), random.randint(-60, -40))
speed = random.randint(7, 20)
traffic_ car = TrafficCar(random.choice(traffic_ car_ images), position, speed)
traffic_ cars_ group.add(traffic_ car)
def display_ scores():
scores = get_top_scoresO
у = 200
for і , score in enumerate(scores):
text_co\or = (64, 64, 64)
ifi = О :
text_color = (255, 255, О) # Жовтий колір для першого місця
FONT.render_to(screen, (SCREEN_ WIDTH // 2 - 50, у), fScore: {score}', text_color)
у += 50
# Завантаження зображень
1ny_car_image = \oad_image('imagesl /mercedes.png', (100, 70), -90)
66
82.ЧДТУ.242210 12-01 6
road_image = load_image('images l/road.pпg', (SCREEN_ WIDTH, SCREEN_HEIGHT))
traffic_ car_ images = [
Ioad _i111age('imagesl/traffic_ carl .рпg', ( І ОО, 70), 90),
Joad _image('images 1/traffic_ car2.pпg', ( І ОО, 70), -90),
Ioad _image('images 1/traffic_ carЗ.png', ( 1о о, 70), -90)
# Завантаження зображення фону меню
menu_background_image = load_ image('imagesl /menu background.png', (SCREEN_W IDTH,
SCREEN_HEIGHT))
# Ігрові об'єкти
my_car = MyCar((SCREEN_W IDTH /1 2, SCREEN_HEIGHT - 200), my_car_image)
road_group = pygame.sprite.GтoupQ
traffic_ cars_ group = pygame.sprite. Group()
# Ініціалізація бази даних
create_dbQ
# Завантаження та відтворення музики
pygame.mixer.music.load('mpЗ/your_ music_ file.mpЗ ') # Замініть 'your_ music_ file.mpЗ' на
правильний шлях до вашого файлу з музикою
pygame.mixer.music.play(loops=-1) # Відтворення музики у безюнечному циклі (-1)
# Основний ігровий цикл
running = True
clock = pygame.time.ClockO
direction = None
\Vhile running:
for event in pygame.event.get():
if event.type == pygame.QUIТ:
running = False
if my_car.game_status = 'menu':
67
82-чдТУ.242210 12-01 7
if event.type == pygame MOUS
. EBUTTONDOWN:
х, у = event.pos
if start_ button.collidepoint(x, у):
my_car.game_status == 'game'
spawn_ road()
elif score_ button.collidepoint(x, у):
my_car.gaшe_status == 'scores'
e]if exit_button.co\lidepoint(x, у):
running = False
elifmy_car.game_status = 'game':
ifevent.type== SPAWN_ROAD_TlМE:
spawn_ road()
ifevent.type == SPAWN_TRAFFIC_ТIME:
spawn_traffic()
if event.type == pygame.MOUSEBUТТONDOWN:
х, у = event.pos
if left_button.collidepoint(x, у):
direction = 'left'
elif right_ button.collidepoint(x, у):
direction = 'right'
if event.type == pygame.MOUSEBUТТONUP:
direction = None
elifmy_car.game_status = 'game_over':
if event.type == pygame.MOUSEBUТТONDOWN:
х, у = event. pos
if restart_ button.collidepoint(x, у):
my_car = MyCar((SCREEN_ WIDTH // 2, SCREEN_HEIGHT- 100),
my _саг_i mage)
road_ group.empty()
traffic_ cars_ group.empty()
ту_c ar.game_ status = 'menu'
elif my_ car.game_ status = 'scores':
if event.type == pygame.MOUSEBUТГONDOWN:
х, у = event.pos
if back button.collidepoint(x, у):
68
82-ЧдТУ.242210 12-01 8
my_car.game_status == 'meпu'
screen.fill(BACKGROUNO_ COLOR)
# Відображення фону меню
screen.blit(menu_ backgrouпd _image, (О, О))
ifmy_car.game_status === 'menu':
text_rect = FONT.get_rect('Finich Traffic Racer')
FONT.reпder_to(screen, (SCREEN_ WIDTH // 2 - text_rect.width // 2, SCREEN_HEIGHT
/1 2 - 20), 'Finich Traffic Racer', (255, 255, 255))
start_button = pygame.draw.rect(screen, (О, О, О), (150, SCREEN_HEIGHT // 2 + 50,200,
50))
score_button = pygame.draw.rect(screen, (О, О, О), (150, SCREEN_HEIGHT // 2 + 120,
200, 50))
exit_button = pygame.draw.rect(screen, (О, О, О), (150, SCREEN_HEIGHT // 2 + 190,200,
50))
FONT.render_to(screen, (185, SCREEN_HEIGHT // 2 + 60), 'Start Game', (50, 100, 50))
FONT.render_ to(screen, (185, SCREEN_HEIGHT // 2 + 130), 'View Scores', (50, 50, 50))
FONТ.render to(screen, (260, SCREEN_HEIGHT // 2 + 200), 'Exit', (50, 50, 50))
elif my_car.game_status = 'game':
if direction:
my car.move(direction)
draw_al}()
ту_c ar.crash(traffic_ cars_ group)
my_car.score += І # Додавання очків за час гри
FONT.render to(screen, (10, 10), fScore: {my_car.score}', (255,255, 255))
elif my_car.game_status = 'game_over':
FONT. rend er_to ( screen, (SCREEN_ WIDTH // 2 - 80, SCREEN- HEIGHT - 180), 'Game
Over', (255, 255, 255), size=40)
display_ scores()
255 О О) (SCREEN WIDTH // 2 - 50
restart_button = pygame.draw.rect( screen, ( ' ' ' - '
SCREEN HEIGHT // 2 + 50, 1О О, 50))
Fo - (SCREEN WIDTH // 2 - 35, SCREEN_HEIGHT // 2 + 60),
NT.render_to(screen, -
'Restart', (255, 255, 255))
69
82-ЧДТУ.242210 12-01 9
elif my_ car.game_ status = 'scores':
FONТ.render_to(screen, (SCREEN_ WIDTH // 2 - 50, 50), 'Тор 5 Scores', (255,255, 255))
display_ scores()
back_button = pygame.draw.rect(screen, (О, О, О), (SCREEN WIDTH // 2 - 50,
scREEN_HEIGHT // 2 + 50, 100, 50))
FONТ.render_to(screen, (SCREEN_ WIDTH // 2 - 35, SCREEN_HEIGHT // 2 + 60),
'Back', (255, 255, 255))
# Виведення кнопок для управління
ifmy_car.game_status = 'game':
left_button = pygame.draw.rect(screen, (255,255,255), (50, SCREEN_HEIGHT - 100,
100, 50))
rigl1t_button = pygame.draw.rect(screen, (255,255,255), (SCREEN_ WШТН - 150,
SCREEN _ HEIGHT - 1О О, І ОО, 50))
FONT.render_to(screen, (65, SCREEN_HEIGHT - 85), 'Left', ( 0,0 ,О))
FONT.render_ to(screen, (SCREEN_ WrDTH - 139, SCREEN_ HEIGHT - 85), 'Right', (О, О,
О))
elifmy_car.game_status = 'game_over':
restart_button = pygame.draw.rect(screen, (О, О, О), (SCREEN_ WШТН // 2 - 50,
SCREEN_HEIGHT // 2 + 50, 100, 50))
FONT.render_to(screen, (SCREEN_ WIDTH // 2 - 35, SCREEN_HEIGHT // 2 + 60),
'Restart', (255, 255, 255))
pygame.display. flip()
clock. tick(6 0)
pygame.mixer.music.stop()
pygame.quit()
70
ДОДАТОК В
ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ МОБЬІЛЬНОГО ЗА СТОСУНКУ ГРИ
« FINISH»
Інструкція користувача
482.ЧДТУ.242210 34-001
Листів 6
Розробник Стрічевський І.В.
Черкаси 2024
482 .ЧДТУ.242210 34-01 2
Первинний вид програми після запуску
головне меню
фон меню: Відображає тематичне зображення, яке підкреслює стиль гри.
J{нопки меню:
Start Gаше: Починає гру .
View Sc01·es: Показує таблицю рекордів гравців.
Exit: Вихід з програми.(Рис. В . І).
Рисунок В. І - Інтерфеиu с проrр ами «Програмне забезпечення гри Finish»
71
482-чдтУ.242210 34-0 1 з
Ігровий екран
Автомобіль гравця: Розташов ..,
ании в нижній частині екрана, керується за
допомогою стрілок або кнопок на екрані.
Дороги: Генеруються на задньому плані, створюючи ефект руху.
Трафік: Інші автомобілі, які з'являються на екрані та рухаються вниз,
уникаючи яких, гравець отримує очки.
Очки: Відображаються У верхньому швому куп екрана та збільшуються з
часом гри. Взаємодія користувача
Керування автомобілем: Гравець керує автомобілем за допомогою кнопок
"Left" та "Right", розташованих в нижній частині екрана, або за допомогою
стрілок на клавіатурі.
Вибір пунктів меmо: Гравець натискає на відповідні кнопки на екран~ для
переходу між різними станами гри (початок гри, перегляд результатів, вихід з
програми).
Початок нової гри: Після завершення гри гравець може натиснути кнопку
"Restart" для початку нової гри.
Таким чином, первинний вигляд програми передбачає зручний та інтуїтивно
зрозумілий інтерфейс, який дозволяє гравцев1 легко керувати грою та
отримувати задоволення від процесу. (Рис. В.1 ).
72
-
482-ЧдТУ.2422 10 34-01 4
Рисунок В.2 - Зміна теми в програмі «Програмне забезпечення гри Finish»
Екран результатів:
В центрі екрана заголовок "Тор 5 Scores".
Під заголовком список з п'яти найкращих результатів.
Внизу екрана кнопка "Back" для повернення до головного меню.
(Рисунок В.З) .
73
482 -ЧдТУ.242210 34-01 5
Рисунок В.З - Файловий менеджер в програмі «Програмне забезпечення гри
Finish»
Екран завершення rри:
В центрі екрана великий заголовок "Game Over".
Під заголовком список з п'яти найкращих результатів.
Внизу екрана кнопка "Restart" для початку нової гри
(Рис. В.4).
74
482.ЧДТУ.24221 О 34-01 6
Рисунок В.4 - Засоби для редаrування вигляду зображення в програмі
«Програмне забезпечення rри Finish»
75
ДОДАТОК Г
ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ МОБЬІЛЬНОГО ЗАСТОСУНКУ ГРИ
« FIN1SH»
Графічні матеріали
482.ЧДТУ.242210 12-01
Листів 6
Розробник Стрічевський І.В.
Черкаси 2024
482 ·Ч ДТУ .24 22 І О 90-0 І 2
Рисунок Г. 1 - Слайд 1
► Мета розробки: <<FiniGh Iraffic Rш::_e_nJ є створення якісного та захоплюючого
ігрового продукту, який поєднує в собі елементи симулятора водіння та аркадно·,
гри, забезпечуючи користувачам цікаве та корисне проведення часу .
..,....., ..... ,/
·.•· 1 · .. _
/
/
/
ПрактІІЧІІИІ\І значеІІІІSІМ Розвага та навчання: Гра надає користувачам
можливість не лиwе отримати задоволення від гр~, але й покращ11m свої реакційні
навички та конu.ентраuію уваги через виконання р1зних завдань
Рисунок Г.2 - Слайд 2
76
482-ЧДТУ.24221 О 90-0 l з
Рисунок Г.3 - Слайд З
Рисунок Г.4 - Слайд 4
77
-
\ . •· ...... ,,. '.~ ....
_,J
.............. ... ,..
Рнсунок Г.5 - Слnі'tд -
Рнсу1101\ Г.6 - JШЩ\ 6
482-ЧдТУ.24221 О 90-0 І 5
Рисунок Г.7 - Слайд 7
Рисунок Г.8 - Слайд 8
79
482 -ЧдТУ.2422 10 90-01 6
Рисунок Г.9 - Слайд 9
Рисунок Г. l О - Слайд 1О
80