Проектування та реалізація програмного забезпечення для представлення та взаємодії елементів гри "Кубик Рубіка" з використанням бібліотеки OpenGL

Проектування програмного забезпечення для гри "Кубик Рубіка" з використанням бібліотеки OpenGL. Реалізація програми в середовищі розробки Microsoft Visual Studio 2013. Математичні методи, використані у роботі. Опис програмного забезпечення та тестування.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 18.10.2017
Размер файла 1,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

“ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”

Кафедра “Автоматизовані системи управління”

КУРСОВА РОБОТА

«Проектування та реалізація програмного забезпечення для представлення та взаємодії елементів гри “Кубик Рубіка” з використанням бібліотеки OpenGL»

Керівник роботи:

ст. викладач каф. АСУ

Іванов Л. В.

Виконавець:

студент групи ІФ-33б

Заруднєв М. А.

Харків - 2014

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

“ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”

Кафедра “Автоматизовані системи управління”

Студент Заруднєв М. А. Група ІФ - 33б Курс 1

З А В Д А Н Н Я

на науково-дослідну курсову роботу

з курсу "Об'єктно-орієнтований аналіз і програмування"

Тема: Розробка програмного забезпечення гри «Кубик Рубіка» з використанням бібліотеки OpenGL.

Постановка задачі:

Під час виконання роботи необхідно спроектувати та реалізувати програмне забезпечення для гри «Кубик Рубіка». Необхідно реалізувати тривимірні графічні об'єкти та описати їх взаємодію.

Програма повинна бути створена мовами C++ або С# з використанням бібліотеки OpenGL. Необхідно реалізувати наступні можливості програми:

– створення нового поля гри (очищення вікна та відтворення початкової ситуації;

– вибір та додавання елементу гри за допомогою функцій клавіатури;

– маніпуляції з елементами гри відповідно до завдання;

– обертання поля гри;

– зберігання результатів (рекорди, рівень) та відтворення їх за бажанням користувача.

Для представлення елементів та опису їхньої взаємодії слід застосувати об'єктно-орієнтований підхід. Слід представити необхідну інформацію про програму та способи її застосування (презентацію).

Короткий зміст роботи:

а) реферативна частина

Дослідження поставленої задачі. Дослідження та аналіз необхідних програмних методів розв'язання задачі. Постановка задачі.

б) теоретична частина

Визначення вимог щодо програмного забезпечення. Побудова діаграми варіантів використання. Проектування інтерфейсу користувача. Розробка необхідних UML-діаграм.

в) програмна частина

Реалізація та тестування програмного забезпечення. Документування програмного продукту.

г) реалізація додаткового завдання.

Термін демонстрації програмного забезпечення 15.05.2014

Термін захисту курсової роботи 27.05.2014

Керівник курсової роботи (Іванов Л.В. )

ВІДГУК

кубик рубік програмний

Під час роботи було створене програмне забезпечення для гри «Кубик Рубіка» з використанням бібліотеки OpenGL. У грі були спроектовані та реалізовані об'єкти та описані їх взаємодії. Створена програма містіть такі можливості:

– Ініціалізація гри (встановлення початкових значень);

– Управління за допомогою клавіатури та мишки;

– Маніпуляція елементами відповідно до правил гри;

– Керування камерою;

– Масштабування;

– Розгорнення вікна гри на повний екран;

– Підрахунок і зберігання статистики ігор;

Для представлення елементів та опису їхньої взаємодії був використаний об'єктно-орієнтований підхід.

Ст. викладач каф. АСУ ________________/ Іванов Л.В./

РЕФЕРАТ

КР: 16с., 5 рис., 5 джерел

Ключові слова: C#, ПРОГРАМУВАННЯ, OPENGL, «КУБИК РУБІКА», ОБ'ЄКТНО-ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ

Об'єктом моєї роботи є дослідження об'єктно-орієнтованого програмування, а також створення гри, використовуючи засоби графічного моделювання .

Метою моєї роботи є отримання практичних навичок у проектуванні та реалізації програмного забезпечення для представлення та взаємодії елементів головоломки «Кубик Рубіка» з використанням бібліотеки OpenGL.

У роботі використано мову С#. Реалізація виконувалась у среді розробки Microsoft Visual Studio 2013.

РЕФЕРАТ

КР: 16с., 5 рис., 5 источника

Ключевые слова: C#, ПРОГРАММИРОВАНИЕ, OPENGL, КУБИК РУБИКА, ОБЬЕКТНО-ОРИЕНТИРОВАНОЕ ПРОГРАММИРОВАНИЕ

Объектом моей работы является исследование объектно-ориентированного программирования, а так же создание игры, используя средства графического моделирования.

Целью моей работы является получение практических навыков по проектированию и реализации программного обеспечения для представления и взаимодействия элементов головоломки «Кубик Рубика» с использованием библиотеки OpenGL.

В данной работе был использован язык С#. Реализация велась в среде разработки Microsoft Visual Studio 2013.

ABSTRACT

SW: 16p., 5 fig, 5 sources

Key word: C#, PROGRAMMING, OPENGL, RUBIK'S CUBE, OBJECT-ORIENTED

The object of my work is research of object-oriented programming and creating game with using the graphical design.

The purpose of my work is to obtain practical skills in designing and implementing software for presentation the interaction between elements of the «Rubik's Cube» puzzle using the OpenGL library.

In this project was used C#. The implementation was conducted in the development environment of Microsoft Visual Studio 2013.

ЗМІСТ

Вступ

1. Особливості програмної реалізації гри

1.1 Математичні методи, використані у роботі

1.1.1 Скалярний добуток

1.1.2 Векторний добуток

1.2 Визначення OpenGL

1.3 Специфікація OpenGL

1.4 Архітектура OpenGL

2. Проектування програмного забезпечення

2.1 Поняття проектування програмного забезпечення

2.2 Діаграма варіантів використання

2.3 Діаграма класів

3. Опис програмного забезпечення та процесу його тестування

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

3.2 Програмні та апаратні вимоги, процес запуску гри

3.3 Інструкція користувача

Висновки

Список джерел інформації

Додаток А UML діаграми

Вступ

Програмування ігор - це найцікавіша, але й найскладніша галузь у програмуванні. До створення ігрового движка входить програмування 3D або 2D графіки, підтримка фізики та звукового супроводу, забезпечення взаємодії користувача з грою та з іншими користувачами у мережевий або онлайн грі, написання утиліт для експорту з пакетів моделювання, таких як 3D MAX.

Мета існування будь-якої гри - розважати гравця. Важливий елемент "входження" в дію це злиття гравця з його уособлюючим персонажем - у цьому випадку від ігрового процесу стає складно відірватися, він "захоплює". Тоді в людини, як правило, залишається позитивне враження від витраченого часу.

1. Особливості програмної реалізації гри

1.1 Математичні методи, використані у роботі

1.1.1 Скалярний добуток

Скалярний добуток -- математична операція над двома векторами, результатом якої є скаляр. Скалярний добуток векторів та обчислюється за формулою:

де та - довжини векторів, - кут між цими векторами [1].

1.1.2 Векторний добуток

Векторний добуток -- білінійна, антисиметрична операція на векторах у тривимірному просторі. На відміну від скалярного добутку векторів евклідового простору, результатом векторного добутку є вектор, а не скаляр.

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

де , , , , , - координати x, y, та z векторів та відповідно.

Досить розповсюдженим є представлення векторного добутку у вигляді детермінанту [1]:

1.2 Визначення OpenGL

OpenGL - (англ. Open Graphics Library - відкрита графічна бібліотека) - специфікація, що визначає незалежний від мови програмування крос-платформовий програмний інтерфейс (API) для написання застосунків, що використовують 2D та 3D комп'ютерну графіку. Цей інтерфейс містить понад 250 функцій, які можуть використовуватися для малювання складних тривимірних сцен з простих примітивів. Бібліотека OpenGL широко застосовується індустрією комп'ютерних ігор і віртуальної реальності, у графічних інтерфейсах, при візуалізації наукових даних, в системах автоматизованого проектування тощо.

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

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

1.3 Специфікація OpenGL

На базовому рівні, OpenGL - це просто специфікація, тобто документ, що описує набір функцій і їх точну поведінку. Виробники обладнання на основі цієї специфікації створюють реалізації - бібліотеки функцій, відповідних набору функцій специфікації. Реалізація використовує можливості обладнання там, де це можливо. Якщо апаратура не дозволяє реалізувати будь-яку можливість, вона повинна бути емульована програмно. Виробники повинні пройти специфічні тести (conformance tests - тести на відповідність) перш ніж реалізація буде класифікована як OpenGL реалізація. Таким чином, розробникам програмного забезпечення достатньо навчитися використовувати функції, описані у специфікації, залишивши ефективну реалізацію останніх розробникам апаратного забезпечення.

Ефективні реалізації OpenGL існують для Windows, Unix-платформ, PlayStation 3 і Mac OS. Ці реалізації звичайно надаються виробниками відеоадаптерів і активно використовують можливості останніх. Існують також суто програмні реалізації специфікації OpenGL, однією з яких є бібліотека Mesa. З ліцензійних міркувань Mesa є «неофіційної» реалізацією OpenGL, хоча повністю з нею сумісна на рівні коду [2].

1.4 Архітектура OpenGL

Основним принципом роботи OpenGL є отримання наборів векторних графічних примітивів у вигляді точок, ліній та багатокутників з наступною математичною обробкою отриманих даних і побудовою растрової картинки на екрані та / або в пам'яті. Векторні трансформації і растеризація виконуються графічним конвеєром (graphics pipeline), який по суті представляє з себе дискретний автомат. Абсолютна більшість команд OpenGL потрапляють в одну з двох груп: або вони додають графічні примітиви на вхід в конвеєр, або конфігурують конвеєр на різне виконання трансформацій.

OpenGL є низькорівневим функціональним API, що змушує програміста диктувати точну послідовність кроків, щоб побудувати результуючу растрову графіку (імперативний підхід). Це є основною відмінністю від дескрипторних підходів, коли вся сцена передається у вигляді структури даних (найчастіше дерева), яке обробляється і будується на екрані. З одного боку, імперативний підхід вимагає від програміста глибокого знання законів тривимірної графіки і математичних моделей, з іншого боку - дає свободу впровадження різних інновацій.

Функції OpenGL реалізовані в моделі клієнт-сервер. Додаток виступає в ролі клієнта - воно виробляє команди, а сервер OpenGL інтерпретує і виконує їх. Сам сервер може знаходитися як на тому ж комп'ютері, на якому перебуває клієнт (наприклад, у вигляді динамічно завантажується бібліотеки - DLL), так і на іншому (при цьому може бути використаний спеціальний протокол передачі даних між машинами).

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

Команди OpenGL завжди обробляються в тому порядку, в якому вони надходять, хоча можуть відбуватися затримки перед тим, як проявиться ефект від їх виконання. З точки зору розробників, OpenGL - це набір команд, які управляють використанням графічної апаратури. Якщо апаратура складається тільки з адресується буфера кадру, тоді OpenGL повинен бути реалізований повністю з використанням ресурсів центрального процесора. Зазвичай графічна апаратура надає різні рівні прискорення: від апаратної реалізації виведення ліній і багатокутників до витончених графічних процесорів з підтримкою різних операцій над геометричними даними [3].

2. Проектування програмного забезпечення

2.1 Поняття проектування програмного забезпечення

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

Залежно від класу створюваного ПЗ, процес проектування може забезпечуватися як «ручним» проектуванням, так і різними засобами його автоматизації. У процесі проектування ПЗ для вираження його характеристик використовуються різні нотації - блок-схеми, ER-діаграми, UML-діаграми, DFD-діаграми, а також макети [5].

2.2 Діаграма варіантів використання

Діаграма варіантів використання дозволяє здійснити аналіз функцій системи. Кожен окремий варіант використання описує поведінку системи відносно зовнішніх об'єктів.

Користувач має 5 основних можливостей: розпочати гру, подивитись рекорди, увімкнути повно екранний режим, користуватись графічним інтерфейсом користувача та вийти з гри. Графічний інтерфейс користувача включає в себе головне меню та меню із рекордами. Гравець може керувати камерою, маніпулювати із кубиком Рубіка та ставити гру на паузу.

Рисунок 2.1 - Діаграма використання

2.3 Діаграма класів

Діаграма класів -- статичне представлення структури моделі. Відображає статичні (декларативні) елементи, такі як: класи, типи даних, їх зміст та відношення. Діаграма класів, також, може містити позначення для пакетів та може містити позначення для вкладених пакетів. Також, діаграма класів може містити позначення деяких елементів поведінки, однак, їх динаміку розкрито в діаграмах інших типів. Діаграму класів представлено у додатку А.1.

2.4 Діаграма діяльності

Діаграма діяльності -- в UML, візуальне представлення графу діяльностей. Граф діяльностей є різновидом графу станів скінченного автомату, вершинами якого є певні дії, а переходи відбуваються по завершенню дій. Діаграми діяльності подібні до процедурних діаграм потоку, але відрізняються від них тим, що діяльності точно прив'язано до об'єктів.

Рисунок 2.2 - Діаграма діяльності

3. Опис програмного забезпечення та процесу його тестування

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

Під час тестування не виявлено невідповідностей та порушення функціональності програмного засобу.

3.2 Програмні та апаратні вимоги, процес запуску гри

Для того, щоб програма коректно та повноцінно відображалася, потрібно мати операційну систему Windows XP/Vista/7/8.

Каталог гри містить текстури (*.png), текстовий файл із рекордами (*.txt) та виконавчий файл гри (Rubik's Cube.exe).

Для того, щоб запустити гру, необхідно відкрити файл Rubik's Cube.exe.

3.3 Інструкція користувача

Кубик Рубіка - це найвідоміша головоломка, тому зупинятися на додаткових поясненнях щодо правил немає сенсу. Одне я зазначу: обертання сторін куба реалізоване через натискання мишкою на відповідні стрілки. Після того, як гравцю вдасться зібрати головоломку, гра закінчується і, у разі нового рекорду, результат зберігається.

Натисненням клавіші «ESC» гра стає на паузу, клавіши «F11» - вмикається повно екранний режим. Обертання камери здійснюється маніпулятором миші із натисненою клавішею «Пробіл», або за допомогою клавіш W, A, S, D. Сцена масштабується скролінгом коліщатка миши.

Після запуску гри відображається логотип:

Рисунок 3.1 - Логотип

Після цього відображається головне меню, яке має три кнопки «Start Game», «Records» та «Exit Game»:

Рисунок 3.2 - Головне меню

При натисканні кнопки «Start Game», гра починається. При виборі пункту «Records» відображується найкращий час, за який гравцю вдалося зібрати кубик Рубіка. При натисканні кнопки «Exit Game», гра, відповідно завершується.

Рисунок 3.3 - Гра у процесі

Висновки

Отже, під час виконання курсової роботи на тему «Проектування та реалізація програмного забезпечення для представлення та взаємодії елементів гри» були реалізовані наступні можливості програми:

1) Ініціалізація гри (встановлення початкових значень);

2) Управління за допомогою клавіатури та мишки;

3) Маніпуляція елементами відповідно до правил гри;

4) Керування камерою;

5) Масштабування;

6) Розгорнення вікна гри на повний екран;

7) Підрахунок і зберігання статистики ігор;

Для представлення елементів та опису їхньої взаємодії було застосовано об'єктно-орієнтований підхід.

Список джерел інформації

1 Беклемишев Л. В. Курс аналитической геометрии и линейной алгебры

// М., Физматлит, 2000 г.

2 Шрайнер Д., Ву М., Нейдер Дж., Девис Т. OpenGL. Руководство по программированию / Пер. с англ. - 4-е изд. - СПб.: Питер, 2006. - 623 с.

3 Документація SDL - http://plg.lrn.ru , 05.11.

4 Шилдт Г. Полный справочник по C#.: Пер. с англ. -- М.: Издательский дом “Вильямс”, 2004. - 752 с. : ил. -- Парал. тит. англ.

5 2009Хилл Ф. OpenGL. Программирование компьютерной графики. Для профессионалов / Пер. с англ. - СПб.: Питер, 2002. - 1088 с.

ДОДАТОК А

UML діаграми

А.1 Діаграма класів

Размещено на Allbest.ru


Подобные документы

  • Тривимірна модель мобільного робота. Алгоритмізація моделі та її програмної реалізації з використанням бібліотек MFC та OpenGL. Розробка програмного забезпечення. Середовище розробки проекту Microsoft Visual Studio 2010. Керування рухами маніпулятора.

    курсовая работа [462,9 K], добавлен 03.04.2014

  • Методи аналізу та засоби забезпечення надійності, що використовуються при проектуванні програмного забезпечення. Основні види складності. Якісні та кількісні критерії. Ієрархічна структура. Попередження помилок. Реалізація статичної і динамічної моделей.

    реферат [128,2 K], добавлен 20.06.2015

  • Проектування і реалізація навчального програмного продукту "Побудова геометричних фігур". Використання C++ Builder 6 у якості програмного середовища для реалізації даної навчальної програми. Інструкція з використання розробленого програмного забезпечення.

    курсовая работа [2,2 M], добавлен 05.05.2014

  • Аналіз об'єктів дослідження, проектування баз даних. Розробка програмного забезпечення для роботи зі спроектованою базою даних. Реалізація індексів, опис метаданих в середовищі MySQL. Специфікація DDL для MySQL, протокол тестування DDL-сценарії.

    контрольная работа [389,9 K], добавлен 05.01.2014

  • Оптимізація перевезення продуктів із пунктів відправлення до пунктів споживання. Зниження транспортних витрат, розробка і використання оптимальних схем вантажних потоків. Архітектура програмного забезпечення в середовищі Microsoft Visual Studio 2010.

    курсовая работа [675,3 K], добавлен 10.03.2013

  • Проблеми розробки компонентного програмного забезпечення автоматизованих систем управління. Сучасні компонентні технології обробки інформації. Аналіз вибраного середовища проектування програмного забезпечення: мова програмування PHP та Apache HTTP-сервер.

    дипломная работа [2,8 M], добавлен 11.05.2012

  • Аналіз системи збору первинної інформації та розробка структури керуючої ЕОМ АСУ ТП. Розробка апаратного забезпечення інформаційних каналів, структури програмного забезпечення. Алгоритми системного програмного забезпечення. Опис програмних модулів.

    дипломная работа [1,9 M], добавлен 19.08.2012

  • Тестування програмного забезпечення як процес його дослідження для отримання інформації про якість. Автоматизація тестування програми Join It - Jigsaw Puzzle. Методика тестування, структура пакету та його модулів. Вимоги до програмного забезпечення.

    дипломная работа [2,4 M], добавлен 24.07.2013

  • Огляд існуючих методів розробки компіляторів, детальний опис мови. Характеристика та специфіка процесу розробки програми компілятора на рівні блок-схем і тексту програми. Подання тексту компілятора, а також результатів тестування розробленої програми.

    курсовая работа [510,2 K], добавлен 03.06.2011

  • Аналіз методів емпіричної інженерії програмного забезпечення. Призначення та властивості програмного забезпечення та метрик проектів Openproj-1.4-src, TalendOpen Studio 3.2.1 та Рlazma-source 0.1.8, їх статистичний, кореляційний та регресійний аналіз.

    курсовая работа [2,7 M], добавлен 12.12.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.