Проектування та розробка програмного забезпечення гри «Шашки»

Отчет по практике по предмету «Программирование»
Информация о работе
  • Тема: Проектування та розробка програмного забезпечення гри «Шашки»
  • Количество скачиваний: 53
  • Тип: Отчет по практике
  • Предмет: Программирование
  • Количество страниц: 20
  • Язык работы: українська мова (Украинский)
  • Дата загрузки: 2014-12-25 18:31:00
  • Размер файла: 208.79 кб
Помогла работа? Поделись ссылкой
Информация о документе

Документ предоставляется как есть, мы не несем ответственности, за правильность представленной в нём информации. Используя информацию для подготовки своей работы необходимо помнить, что текст работы может быть устаревшим, работа может не пройти проверку на заимствования.

Если Вы являетесь автором текста представленного на данной странице и не хотите чтобы он был размешён на нашем сайте напишите об этом перейдя по ссылке: «Правообладателям»

Можно ли скачать документ с работой

Да, скачать документ можно бесплатно, без регистрации перейдя по ссылке:

ЗМІСТ

Вступ 9
1 Особливості гри «Шашки» 10
1.1 Історія виникнення гри 10
1.2 Правила гри 10
1.3 Постановка задачі 11
2 Програмні засоби реалізації гри «Шашки» 12
2.1 OpenGL 12
2.1.1 Основні можливості OpenGL 12
2.1.2 Основи OpenGL 13
2.2 Мова програмування C++ 13
2.2.1 Стандарт C++ 13
2.2.2 Стандартна бібліотека C++ 14
2.3 Уніфікована мова проектування UML 15
2.3.1 Діаграма варіантів використання 15
2.3.2 Діаграма класів 17
3 Проектування та розробка програмного забезпечення 19
3.1 Варіанти використання гри «Шашки» 19
3.2 Класи гри, що використовуються, та їх властивості 20
3.3 Діаграма діяльності 20
4 Опис розробленого програмного забезпечення 22
4.1 Вимоги до наявності бібліотек та системні вимоги 22
4.2 Інформація для користувача 22
Висновки 24
Список джерел інформації 25

ВСТУП
Перші примітивні компютерні і відеоігри були розроблені в 1950-х і 1960-х роках. Вони працювали на таких платформах, як осцилографи, університетські мейнфрейми і компютери EDSAC. Найпершою компютерною грою став симулятор ракети, створений в 1942 році Томасом Голдсмітом Молодшим (англ. Thomas T. GoldsmithJr.) і Істл Рей Менном (англ. EstleRayMann).
З моменту створення першої комп’ютерної гри минуло багато часу, за який випуск комп’ютерних ігор перетворився в багатомільярдну індустрію. Основним поштовхом до цього стало створення персональних комп’ютерів, тобто комп’ютерів, які ми звикли бачити сьогодні. Саме це дало змогу поширитися індустрії розваг до кожного дому. Такий різкий ріст популярності та попиту на ігри призвіл до того, що з’явилась гостра необхідність у висококваліфікованих кадрах, які займалися розробкою комп’ютерних ігор. І якщо на момент зародження даної індустрії над проектом могли працювати всього декілька людей, а іноді і один програміст, то сьогодні ринок компютерних розваг контролюють корпорації зі штатом в декілька тисяч осіб. Оскільки попит на ігри дуже високий, розробка ігор на сьогоднішній день є дуже актуальною темою.
1 ОСОБЛИВОСТІ ГРИ «ШАШКИ»
1.1 Історія виникнення гри
Про виникнення шашок існує безліч легенд. Одна історична версія приписує їх винахід грецькому воїну Паламеда, одному з героїв Троянської війни. Адже вона тривала десять років, і, щоб убити нудьгу, він нібито і придумав гру ...
А мешканці Лідійського держави в Малій Азії, мучить в роки неврожаю голодом, винайшли чудовий спосіб вгамовувати його ... також грою в Шашки. Про це є свідчення грецького історика Геродота : « Там були фішки для жереба, кістки і мячі та інші предмети - фішки для ігор на дошці ( Пессоа ) »
Деякі історики вважають шахи предками шашок, інші - навпаки. Тим часом археологічні розкопки, що відносяться до 3000 року до нашої ери показали, що в Стародавньому Єгипті вже була відома різновид шашкової гри.
Дійшла до нашого часу і легенда, записана Геродотом зі слів єгипетських жерців, що оповідає про те, як фараон Рамзес III спускався в пекло для гри в Шашки з богинею землеробства, причому фараон то вигравав, то програвав. Цю гру Геродот назвав « кюбейя », що грецькою означає гра нардового типу[1].

1.2 Правила гри
Оскільки на даний момент існуєбезлічваріантівгри у Шашки, булообрано наступні правила. Використовуєтьсядошка 8 × 8 клітин. У кожного гравця в початковійпозиції по 12 простихшашок,якізаймаютьчорні поля перших трьох горизонталей з найближчою до ньогосторони. В ходігришашки рухаються по чорнимполях, вони можутьвставатитільки на незайняті поля. Проста шашка може : піти по діагоналі вперед на одну клітку,побити шашку або дамку суперника. При цьому шашка рухається по діагоналі на двіклітини в будь-якомунапрямку,перестрибуючи через шашку або дамку суперника, яка знімається з дошки. Якщо з нового положення шашки можнапобитиіншу шашку або дамку суперника,хідтриваєдоти,покищобє шашка не досягнеположення, з якогобійнеможливий. При досягненнідамочного поля (будь-якого поля останньоїгоризонталі ) проста шашка перетворюється на дамку . Дамка можеходитина будь-яку відстань по діагоналі в будь-якомунапрямку, а бити на 1 клітинкупісля шашки противника. Шашка,щодосягладамочного поля,далі на тому ж ходу бє як дамка .Пропуск ходу не допускається. Мета гри - « зїсти » або « замкнути » ( позбавитиможливості ходу) всі шашки супротивника.

1.3 Постановка задачі
Під час виконання роботи необхідно спроектувати та реалізувати програмне забезпечення для гри «Шашки». Необхідно реалізувати тривимірні графічні об’єкти сфера, куб, паралелепіпед та описати їх взаємодію на мові C++ з використанням бібліотеки OpenGL. Необхідно реалізувати наступні можливості програми:
 можливість розпочати гру, завершити її та зберегти поточний стан гри для подальшого відновлення;
 управління грою за допомогою функцій клавіатури або миші;
 взаємодія з гравцем відповідно до логіки гри;
 обертання поля гри.
2 ПРОГРАМНІ ЗАСОБИ РЕАЛІЗАЦІЇ ГРИ «ШАШКИ»
2.1 OpenGL
2.1.1 Основні можливості OpenGL
Серед інших програмних інтерфейсівOpenGL виділяється завдяки таким перевага:
 Набір базових примітивів: точки, лінії, багатокутники і т.п.;
 Видові і координатні перетворення;
 Видалення невидимих ліній і поверхонь (z-буфер);
 Використання сплайнів для побудови ліній і поверхонь;
 Накладення текстури та застосування освітлення;
 Додавання спеціальних ефектів: туману, зміна прозорості, змішування кольорів (blending), усунення ступінчастості (anti-aliasing).
Як вже було сказано, існує реалізація OpenGL для різних платформ, для чого було зручно розділити базові функції графічної системи і функції для відображення графічної інформації та взаємодії з користувачем. Були створені бібліотеки для відображення інформації за допомогою віконної підсистеми для операційних систем Windows і Unix (WGL і GLX відповідно), а також бібліотеки GLAUX і GLUT, які використовуються для створення так званих консольних додатків.
Бібліотека GLAUX поступається за популярністю написаної трохи пізніше бібліотеці GLUT, хоча вони надають приблизно однакові можливості. Надалі в цьому посібнику як основний буде розглядатися бібліотека GLUT, що надає широкий набір засобів взаємодії з користувачем.
До складу бібліотеки GLU увійшла реалізація більш складних функцій, таких як набір популярних геометричних примітивів (куб, куля, циліндр, диск), функції побудови сплайнів, реалізація додаткових операцій над матрицями і т.п. Всі вони реалізовані через базові функції OpenGL[2].

2.1.2 Основи OpenGL
З точки зору архітектури графічна система OpenGL є конвеєром, що складається з декількох етапів обробки даних:
 Апроксимація кривих і поверхонь;
 Обробка вершин і збірка примітивів;
 Растерізація та обробка фрагментів;
 Операції над пікселями;
 Підготовка текстури;
 Передача даних в буфер кадру.
GL обробляє і виводить так звані примітиви (primitive) з урахуванням деякого числа вибраних режимів. Кожен примітив - це точка, відрізок, багатокутник і т.д. Кожен режим може бути змінений незалежно від інших. Визначення примітивів, вибір режимів та інші операції описується за допомогою команд у формі викликів процедур.
Примітиви визначаються набором з однієї або більше вершин (vertex). Вершина визначає точку, кінець межі, кут багатокутника. З кожною вершиною асоціюються деякі дані (координати, колір, нормаль, текстурні координати). У переважній більшості випадків кожна вершина обробляється незалежно від інших.
Команди OpenGL завжди обробляються в тому порядку, в якому вони надходять, хоча можуть відбуватися затримки перед тим, як проявиться ефект від їх виконання.

2.2 Мова програмування C++
2.2.1 Стандарт C++
В 1998 році мова С++ була стандартизованаМіжнародною організацією стандартизації під номером 14882:1998 — Мова Програмування С++. В даний час робоча група МОС працює над новою версією стандарту під кодовою назвою C++09 (раніше відомий як C++0X), який має вийти в 2009 році.
Стандарт С++ на 1998 рік складається з двох основних частин: ядра мови і стандартної бібліотеки. Стандартна бібліотека С++ увібрала в себе бібліотеку шаблонівSTL, що розроблялася одночасно із стандартом. Зараз назва STL офіційно не вживається, проте в кругах програмістів на С++ ця назва використовується для позначення частини стандартної бібліотеки, що містить визначення шаблонів контейнерів, ітераторів, алгоритмів і функторів.
Стандарт С++ містить нормативне посилання на стандарт С від 1990 року і не визначає самостійно ті функції стандартної бібліотеки, які запозичуються із стандартної бібліотеки С.
Поза тим, існує величезна кількість бібліотек С++, котрі не входять в стандарт. У програмах на С++ можна використовувати багато бібліотек С.
Стандартизація визначила мову програмування С++, проте за цією назвою можуть ховатися також неповні, обмежені достандартні варіанти мови. Спочатку мова розвивалася поза формальними рамками, спонтанно, у міру завдань, що ставилися перед ним. Розвиток мови супроводив розвиток кросс-компілятораCfront. Нововведення в мові відбивалися в зміні номера версії кросс-компілятора. Ці номери версій кросс-компілятора розповсюджувалися і на саму мову, але стосовно теперішнього часу мову про версії мови С++ не ведуть[3].

2.2.2 Стандартна бібліотека C++
Стандартна бібліотека С++ включає стандартну бібліотеку С з невеликими змінами, які роблять її відповіднішою для мови С++. Інша велика частина бібліотеки С++ заснована на Стандартній Бібліотеці Шаблонів (STL). Вона надає такі важливі інструменти, як контейнери (наприклад, вектори і списки) і ітератори (узагальнені вказівники), що надають доступ до цих контейнерів як до масивів. Крім того, STL дозволяє схожим чином працювати і з іншими типами контейнерів, наприклад, асоціативними списками, стеками, чергами.
Використовуючи шаблони, можна писати узагальнені алгоритми, здатні працювати з будь-якими контейнерами або послідовностями, доступ до членів яких забезпечують ітератори.
Так само, як і в Сі, можливості бібліотек активізуються використанням директиви #include для включення стандартних файлів. Всього в стандарті С++ визначено 50 таких файлів.
STL до включення в стандарт С++ була сторонньою розробкою, на початку — фірми HP, а потім SGI. Стандарт мови не називає її «STL», оскільки ця бібліотека стала невідємною частиною мови, проте багато людей до цих пір використовують цю назву, щоб відрізняти її від решти частини стандартної бібліотеки (потоки введення/виведення(Iostream), підрозділ Сі тощо). Проект під назвою STLport, заснований на SGI STL, здійснює постійне оновлення STL, IOstream і рядкових класів. Деякі інші проекти також займаються розробкою приватних застосувань стандартної бібліотеки для різних конструкторських завдань. Кожен виробник компіляторів С++ обовязково поставляє якусь реалізацію цієї бібліотеки, оскільки вона є дуже важливою частиною стандарту і широко використовується.
Причиною успіху STL, зокрема її вхід до стандартної бібліотеки С++, була націленість на широке коло завдань і узагальнена структура. В цьому сенсі, близькою за духом STL на сьогодні є бібліотекаBoost. Boost теж є бібліотекою загального застосування і теж впливає на формування стандартної бібліотеки С++.

2.3 Уніфікована мова проектування UML
2.3.1 Діаграма варіантів використання
Варіантвикористання (usecase,у деяких перекладах- прецедент) специфікуєповедінкусистемиабоїїчастини,спрямованийнаотримання користувачем певногорезультату.Варіантивикористання можна розглядати як типову взаємодію користувачаі компютерної системи.


Рисунок 2.1 – Варіант використання

На рисунку 2.1 зображено приклад того, як на діаграмі UML позначається варіант використання (еліпс з назвою метода у середині, або під ним).


Рисунок 2.2 – Дійова особа (actor)

З одним або кількома варіантами використання повязана дійова особа (actor, актор – рисунок 2.2). Дійові особи не тотожні фізичним особам, а визначаються звязковою множиною ролей, які користувачі виконують під час взаємодії з системою.
Дійові особи та варіанти використання звязуються один з одним за допомогою відношення асоціації, яке зображується на діаграмі суцільною прямою лінією.
Між окремими варіантами використання можна вводити звязку типу "узагальнення", а також типу залежностей зі стереотипами, "включення" і "розширення". Даний звязок зображується пунктирною лінією зі стрілкою.
Звязок типу "розширення" застосовується в тих випадках, коли один варіант використання подібний до іншого, але має трохи більше навантаження. Зазвичай розширення відображає деякі спеціальні варіанти, що розширюють можливість основного. Звязок типу "включення" застосовується в тих ситуаціях, коли є який-небудь фрагмент поведінки системи, який доцільно виділити в окремий варіант використання, наприклад, якщо цей фрагмент може бути включений в кілька інших варіантів. Діаграма варіантів використання розглядається на прикладі проектування програми вирішення квадратного рівняння[4].

2.3.2 Діаграма класів
Діаграма класів (classdiagram) використовується для представлення статичної структури моделі системи в термінології класів обєктно-орієнтованого програмування. Діаграма класів може відображати, зокрема, різні взаємозвязки між окремими сутностями предметної області, такими як обєкти і підсистеми, а також описує їхню внутрішню структуру і типи відносин. На даній діаграмі не вказується інформація про тимчасові аспектах функціонування системи. З цієї точки зору діаграма класів є подальшим розвитком концептуальної моделі проектованої системи.
Діаграма класів є певний граф, вершинами якого є елементи типу "класифікатор", які повязані різними типами структурних відносин. Слід зауважити, що діаграма класів може також містити інтерфейси, пакети, відносини і навіть окремі екземпляри, такі як обєкти і звязку. Коли говорять про дану діаграмі, мають на увазі статичну структурну модель проектованої системи. Тому діаграму класів прийнято вважати графічним представленому таких структурних взаємозвязків логічної моделі системи, які не залежать або інваріантні від часу. Діаграма класів складається з безлічі елементів, які в сукупності відображають декларативні знання про предметну область. Ці знання інтерпретуються в базових поняттях мови UML, таких як класи, інтерфейси і відносини між ними та їх складовими компонентами. При цьому окремі компоненти цієї діаграми можуть утворювати пакети для представлення більш загальної моделі системи. Якщо діаграма класів є частиною деякого пакету, то її компоненти повинні відповідати елементам цього пакета, включаючи можливі посилання на елементи з інших пакетів.
У загальному випадку пакет статичної структурної моделі може бути представлений у вигляді однієї або декількох діаграм класів. Декомпозиція деякого подання на окремі діаграми виконується з метою зручності та графічної візуалізації структурних взаємозвязків предметної області. При цьому компоненти діаграми відповідають елементам статичної семантичної моделі. Модель системи, у свою чергу, повинна бути узгоджена з внутрішньою структурою класів, яка описується на мові UML[5].
3 ПРОЕКТУВАННЯ ТА РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
3.1 Варіанти використання гри «Шашки»
Згідно до завдання, можнавиділитиосновнісценаріі:
1 Грати
Назва Грати
Мета Вибити всі шашки суперника на полі
Актори Гравець
Передумова Гра запущена, на полі знаходяться білі та чорні шашки
Тригер Запуск гри
Результат Поява на екрані напису про виграш
Основний сценарій Основний успішний сценарій: гравець переміщує вказівник, обирає шашку, переміщує її на нову позицію, право ходу передається супернику, суперник робить хід, право ходу вертається гравцю.
Успішна умова завершення На полі не залишилось фішок суперника
Альтернативні сценарії Розширення основного або альтернативні потоки:гравець переміщує вказівник, обирає шашку, ставить її туди, звідки взяв, обирає іншу шашку, переміщує її на нову позицію, право ходу передається супернику;



2 Відновлення гри
Назва Відновленнягри
Мета Продовжити збережену гру
Актори Гравець
Передумова Гравець запустив гру, у папці з грою знаходиться файл save.txt
Тригер Натискання кнопки «O»
Результат Фішки на полі розставляються згідно збереженому файлу
Основний сценарій Гравець натискає клавішу «L»,програма зчитує данні з файлу, шашки розставляються згідно збереженому стану гри
Успішна умова завершення
Альтернативні сценарії Гравець натискає клавішу «L»,програма зчитує данні з файлу, файл виявляється пошкодженим, гравець створює новий файл, натискає клавішу «L»,програма зчитує данні з файлу, шашки розставляються згідно збереженому стану гри


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

3.2 Класи гри, що використовуються, та їх властивості
Об’єктно-орієнтований підхід базується на використанні при створенні програмного забезпечення класів, та використання об’єктів цих класів як основних одиниць програмного забезпечення. При розробці даної гри були створені класи, які надали можливість реалізувати графічний інтерфейс користувачата сам геймплей гри.
Основна взаємодія між об’єктами класів відбувається під час самого процесу гри. Між собою взаємодіють об’єкти:
 Клас Pointerвідповідає за створення вказівника(контурисинього куба, переміщеннямякогокеруєгравець).
 КласChipвідповідає за створення шашки.
 Клас Conteinerзберыгаэ в собынабыршашок.
 Клас Main обробляє взаємодію між класами Pointer та Chip.
На рисунку 3.2 зображена діаграма класів, які були використанні при створенні гри «Шашки». На даній діаграмі зображена взаємодія між класами.

Рисунок 3.2 – Діаграма класів гри «Шашки

3.3 Діаграма діяльності
Діаграма діяльності – діаграма, на якій показано розкладання деякої діяльності на її складові частини. Діаграма діяльності відображає деякий варіант використання.На рисунку 3.3 зображена діаграма діяльності для даної гри

Рисунок 3.3 – Діаграма діяльності гри «Шашки»

4 ОПИС РОЗРОБЛЕНОГО ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
4.1 Вимоги до наявності бібліотек та системні вимоги
Для запуску гри треба запустити файл Shashki.exe в директорії з грою.
Мінімальні вимоги:
 Windows ХР, або більш пізня версія;
 відео карта не менше 32 Мб видеопам’яті з підтримкою OpenGL 2.0;
 вільного місце на жорсткому диску не менше 5 Мб;
 оперативна память 128 Мб;
 процесор 1.6 ГГц.
 Встановленні компоненти графічної бібліотеки OpenGL;
Для встановлення гри на свій комп’ютер необхідно скопіювати директорію з даним файлом та текстовими файлами, що його супроводжують на локальний диск.


4.2 Інформація для користувача
Управління здійснюється наступними клавішами:
 «L» для збереження гри,
 «О» відновлення збереженоїгри,
 «Esc»вихід з гри,
 «N» почату нову гру,
 «W» передвинути вказівник вгору,
 «A» передвинути вказівник ліворуч,
 «S»передвинути вказівник вниз,
 «D»передвинути вказівник праворуч,
 «SPACE»підняти/опустити шашку,
 Обертання ігрового поля здійснюється за допомогою миші при зажатій лівій кнопці.
Ігрове поле зображено на рисунку 4.1. Після того як на полі не залишиться жодної білої, або жодної чорної шашки, на екрані з’явиться відповідне повідомлення про перемогу якоїсь з сторін та гра розпочнеться заново. Наприклад на рисунку 4.2 зображено повідомлення про виграш чорних.

Рисунок 4.1 – Ігрове поле


Рисунок 4.2 – Повідомлення про виграш чорних.
ВИСНОВКИ
Під час виконання курсової роботи було опрацьовано та вивчено багато матеріалу щодо OpenGL. Тепер засвоєно новий підхід щодо розробки графічних програм на мові С++. Доказом цього служить розроблене програмне забезпечення на мові С++ з використанням бібліотек OpenGL.
В процесі реалізації поставленого завдання були проаналізовані та виправлені всі помилки й недоліки, які зявились на шляху розробки. А також вивчені необхідні для розвязання даної задачі методи. Були реалізовані вимоги, поставленні перед початком роботи:
 можливість розпочати гру, завершити її та зберегти поточний стан гри для подальшого відновлення;
 управління грою за допомогою функцій клавіатури або миші;
 взаємодія з гравцем відповідно до логіки гри;
 обертання поля гри.
СПИСОК ДЖЕРЕЛ ІНФОРМАЦІЇ
Перелік джерел інформації, на які надані посилання в тексті
1 Історія виникнення шашок http://mygazeta.com/жизнь/история-возникновения-шашек.html 06.05.2014
2 OpenGL, программирование, документация. http://www.opengl.org.ru/12.03.2014;
3 C++ - Вікіпедія. http://ru.wikipedia.org/wiki/C++;
4 UnifiedModelingLanguage – Вікіпедія. http://uk.wikipedia.org/wiki/UML 24.03.2014;
5 Іванов Л.В. «UML та RationalRose» методичні вказівки. 2001;