Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой ООП.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆
  1. Розробка програмного забезпечення

3.1 Розробка алгоритму роботи програмного забезпечення

Алгоритм роботи програми зображено на рисунку 3.1.

Рисунок 3.1 – Алгоритм роботи програми.

Далі наведені деякі функції роботи алгоритму:

Якщо стрілка «вліво» - виконується хід в ліву сторону на одну клітинку;

Якщо стрілка «вправо» - виконується хід в праву сторону на одну клітинку;

Якщо стрілка «вверх» - виконується хід в верх на одну клітинку;

Якщо стрілка «вниз» - виконується хід вниз на одну клітинку;

Якщо натиснута клавіша «Esc» - виконується автоматичний вихід з програми;

Якщо натиснута клавіша «F1» - розмір лабіринту набуває значення «23, 17, 6 » та при умові, що була натиснута клавіша «F 10» - кількість монстрів «мала».

Якщо натиснута клавіша «F2» - розмір лабіринту набуває значення «30, 30, 6 » та при умові, що була натиснута клавіша «F 10» - кількість монстрів «велика».

Якщо натиснута клавіша «F3» - розмір лабіринту набуває значення «50, 50, 15» та при умові, що була натиснута клавіша «F 10» - кількість монстрів «мала».

Якщо натиснута клавіша «F4» - розмір лабіринту набуває значення «50, 50, 10» та при умові, що була натиснута клавіша «F 10» - кількість монстрів «велика».

Якщо натиснута клавіша «F5» - розмір лабіринту набуває значення «100, 100, 20 » та при умові, що була натиснута клавіша «F 10» - кількість монстрів «мала».

Якщо натиснута клавіша «F6» - розмір лабіринту набуває значення «100, 100, 10» та при умові, що була натиснута клавіша «F 10» - кількість монстрів «велика».

Якщо натиснута клавіша «F7» - розмір лабіринту набуває значення «200, 200, 20 » та при умові, що була натиснута клавіша «F 10» - кількість монстрів «мала».

Якщо натиснута клавіша «F8» - розмір лабіринту набуває значення «500, 500, 33» та при умові, що була натиснута клавіша «F 10» - кількість монстрів «мала».

Якщо натиснута клавіша «F9» - розмір лабіринту набуває значення «1000, 1000, 40» та при умові, що була натиснута клавіша «F 10» - кількість монстрів «мала».

Якщо натиснута клавіша «Home» - шукається автоматичний розв’язок виходу з лабіринту;

Якщо натиснута клавіша миші на якусь клітинку – об’єкт переміщається до неї.

3.2 Вибір мови програмування

C++ був розвинутий з мови програмування C і за дуже малими виключеннями зберігає C як підмножину. Базова мова, C підмножина C++, спроектована так, що існує дуже близька відповідність між його типами, операціями й операторами і комп'ютерними об'єктами, з якими безпосередньо приходиться мати справу: числами, символами й адресами [5, с. 48].

Microsoft VisualC++ містить безліч інтегрованих засобів візуального програмування. Компілятор VisualC++ містить багато нових інструментальних засобів і поліпшених можливостей, надає величезні можливості в плані оптимізації додатків, внаслідок чого можна отримати виграш як відносно розміру програми, так і відносно швидкості її виконання, незалежно від того, що являє собою ваш додаток.

Система Microsoft VisualC++ дозволяє створювати як маленькі програми і утиліти для персонального використання, так і корпоративні системи, що працюють з базами даних на різних платформах.

Унікальні особливості функцій

Мова C++ дозволяє задавати імена і типи параметрів функції прямо всередині круглих дужок, що слідують за ім'ям функції. Наприклад:

void* vfunc(void *dest, int з, unsigned count)

{...}

Транслятор мови C++ перевірить відповідність фактичних типів значень, переданих у функцію, формальним типам аргументів функції. Також буде перевірена відповідність типу значення типу змінної, якій привласнюється це значення, що повертається.

Перевантаження функцій

У C++ можна використовувати однакові імена для декількох функцій. Звичайно різні функції мають різні імена, але іноді вимагається, щоб одна і та ж функція виконувала схожі дії над об'єктами різних типів. В цьому випадку є зміст визначити декілька функцій з однаковим ім'ям, але різним тілом. Такі функції повинні мати відмінні набори аргументів, щоб компілятор міг розрізняти їх. Не дивлячись на те, що різні функції мають одне ім'я, по типу аргументів компілятор легко зможе визначити, яку версію функції слід викликати у кожному конкретному випадку [4, c.244].

Стандартні значення параметрів функцій

У C++ можна задавати параметрам функцій значення за замовчуванням. У такому випадку при виклику функції можуть бути вказані значення тільки деяких параметрів, тоді як іншим вони будуть призначені автоматично.

Списки аргументів змінного розміру

У C++ за допомогою трьокрапки (...) можуть бути описані функції з невизначеним набором параметрів. Контроль за типами параметрів таких функцій не ведеться, що підвищує гнучкість їх використовування.

Використання посилань на аргументи функцій

За допомогою оператора & можна задати передачу аргументів функції по посиланню, а не по значенню. Наприклад:

void increment(int &variable_reference)

{ variable_reference++; }

Оскільки параметр variable_reference визначений як посилання, його адреса привласнюється адресі змінної i при виклику функції increment (). Остання виконує приріст значення параметра.

Покажчики типу void

У C++ тип void використовується для позначення того, що функція не повертає ніяких значень. Покажчик, що має тип void, може бути привласнений будь-якому іншому покажчику базового типу.

    1. Розробка програми

Програму розроблено графічно, гравець – малюнок кролика (рисунок 3.2), монстр – малюнок змії (рисунок 3.3), стіни трьох видів (рисунок 3.4) та двері (рисунок 3.5). Головне вікно програми зображено на рисунку 3.6.

Рисунок 3.2 – Гравець

Рисунок 3.3 – Монстр

Рисунок 3.4 – Стіни трьох видів

Рисунок 3.5 - Двері

Рисунок 3.6 – Головне вікно програми.

При запуску програми відображається вікно у якому генерується новий лабіринт. У лівому верхньому кутку знаходится персонаж , який має пройти на вихід у протилежному кутку.

Знизу зліва зображено здоров’я гравця та кількість його ходів. Показано на рисунку 3.7.

Рисунок 3.7 - Зоров’я гравця та кількість його ходів

Якщо користувач виграв – відображається відповідне вікно, яке зображено на рисунку 3.8.

Рисунок 3.8 – Виграш.

Якщо користувач програв – відображається відповідне вікно, яке зображено на рисунку 3.9.

Рисунок 3.9 – Програш.

    1. Тестування програмного забезпечення

Тестування направлене на знаходження та виправлення помилок у програмах. Один з методів тестування базується на спостереженні за роботою програми. Відомо, що помилки у програмному забезпеченні мають схильність групуватися (принцип Парето). В програмі завжди є модулі, які є більш проблематичними, ніж інші.

Отож, запустимо програму і будемо вести спостереження. При тестуванні нас цікавитимуть:

1. Чи є помилки у графічній реалізації;

2. Чи правильно гравець проходить по шляху;

3. Чи рахуються кроки;

4. Чи мінусується життя;

5. Чи можна дойти до виходу;

Аналіз результатів роботи програми

Якщо гравець пройшов гру має висвітитись вікно яке зображено на рисунку 3.10.

Рисунок 3.10 – Проходження гри.

Якщо гравець не пройшов гру має висвітитись вікно яке зображено на рисунку 3.11.

Рисунок 3.11 – Не проходження гри.

У грі при стиканні з монстрами має відмінусовуватись життя (рисунки 3.12, 3.13, 3.14).

Рисунки 3.12, 3.13, 3.14 – відмінусовка життя.

Під час перевірки та тестування було проведено ряд тестів, які було описано вище, і в результаті вияснено, що програма працює надійно і злагоджено, помилок виявлено не було.

    1. Висновки

У розділі «Розробка програмного забезпечення» було розроблено об'єктно-орієнтовану систему для генерації лабіринту , було розроблено алгоритм, вибрано мову програмування, завершення кодування вихідної програми та її тестування.

ВИСНОВКИ

У даній курсовій роботі було розроблено, спроектовано та розроблено об'єктно-орієнтовану систему для генерації лабіринту з використанням концепцій об'єктно-орієнтованого програмування і реалізовано на мові програмування С++.

Враховані наступні умови:

Для того щоб виграти, потрібно пройти в протилежний кут лабіринту, не втративши при цьому все здоров'я. Спочатку у гравця 100 життів. Якщо гравець зустрінеться з перешкодою, він втрачає деяку кількість життів.

Можливі наступні перешкоди:

  1. Монстр. Він завжди видно на екрані, забирає 25 життів.

  2. Пастка. Її не можна побачити, зате легко знайти, забирає 10 життів.

  3. Стіна міцна. Гравець може пройти через неї і втратить 10 життів.

4. Стіна слабка (напівпрозора). Те ж саме, забирає 5 життів.

Відмінність монстрів і пасток від стін полягає в тому, що при зустрічі з монстром персонаж при нестачі здоров'я гине, а через стіну він не зможе пройти.

Результати виконання курсової роботи повністю відповідають технічному завданню.

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

  1. Баженова І. Ю. Visual C++ 6.0 Уроки програмування. – Київ: Фоліо, 1997

  2. Белецкий Я. И. Turbo C++. М. : Видавництво Машиностроение 1994.

  3. Бочков С., Субботин Д. Язык программирования Си для персонального компьютера. М: Радио и связь, 1990 Вільямс, 2001

  4. Зубков С. В. Assembler для DOS, Windows и Unix ., Москва: ДМК, 2005

  5. Керниган Б., Ричи Д. Язык программирования «С». – Москва: Видавництво 1996

  6. Кораблев В. Самоучитель Visual C++ .NET. — СПб.: Питер; Киев: Издательская группа BHV, 2004. — 528 с.

  7. Либерти Джес. Освой самостоятельно С++ за 21 день. – Москва:

  8. Павловская Т. А. С/С++. Программирование на языке высокого уровня. Учебник для вузов. — СПб.: Питер, 2001. — 464 с.

  9. Павловская Т. А. Паскаль. Программирование на языке высокого уровня. Учебник для вузов. — СПб.: Питер, 2003. — 393 с.

  10. Паппас К., Мюррей У. Эффективная работа: Visual C++ .NET. — СПб.: Питер, 2002. — 816 с.

  11. Прокофьев Б. П. Turbo C и Turbo C++. - Москва: СП «Ланит», 1992

  12. Стенли Б. Язык программирования С++. - Москва: SAMS, 2000

  13. Страуструп Б.В. Язык программирования С++. - М. : Радио и связь, 1991.

  14. Страуструп Бъерн. Язык программирования «С». – Москва: Видавництво 1998

  15. Фейсон Тед. Borland C. Обьектно ориентированое прорамирование. – Москва: SAMS, 1996