49605 (Гра "Арканоід" на основі XNA Framework), страница 2

2016-07-30СтудИзба

Описание файла

Документ из архива "Гра "Арканоід" на основі XNA Framework", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "49605"

Текст 2 страницы из документа "49605"

Рисунок 1.2 – Модель взаємодії гравця з системою під час гри

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

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

Метою курсового проекту є реалізація гри «Арканоід» на основі XNA Framework, що буде виконувати такий список функцій:

а) Функціонування та відображення меню. Переключення між пунктами меню та виділення поточного пункту.

б) Читання з файлу розташування блоків та особливостей, які має кожний блок, такі як колір, кількість зіткнень із кулькою, щоб розбився блок або щоб блок зовсім не можливо було розбити.

в) Створення грального рівня. Відображення блоків на полі.

г) Пересування бити по полю. Функція дозволяє пересувати вліво або вправо биту у грі.

д) Функції кульки. Функція обробки зіткнень з іншими об’єктами, функція пересування по гральному полю з ладанним прискоренням, зміна напрямку кулі при зіткнені із межами вікна та іншими об’єктами.

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

є) Гра у двох. Функція створення додаткової бити на ігровому полі, з тими ж особливостями, що і першої, для надання можливості одночасної гри двох гравців в одному вікні.

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

з) Звукові ефекти. Програвання звуків у грі, коли кулька зіткнеться із одним з блоків.

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

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

3. Опис концептуальної моделі

3.1 UML-моделювання

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

Вище приведена діаграма послідовностей для прецеденту «Запуск гри» (див рис. 3.1). Діаграма послідовностей дозволяє досить детально описати внутрішні процеси , які виникають під час виконання прецеденту. Діаграма містить ось часу, що спрямована зверху вниз; всіх виконавців; повідомлення або запити між виконавцями; посилання на інші прецеденти.

Рисунок 3.1 – Діаграма послідовностей для прецеденту «Запуск гри»

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

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

UML дозволяє також розробникам програмного забезпечення досягти угоди в графічних позначення для представлення загальних понять (таких як клас, компонент, узагальнення (generalization), об'єднання (aggregation) і поведінка) і більше сконцентруватися на проектуванні та архітектурі.

3.2 Об’єктна модель системи

Далі наведена UML – діаграма класів, яка зображує об’єктну моделі комп’ютерної гри, яка реалізована в даному курсовому проекті. Вона описує структуру системи, показуючи її класи, їх атрибути і оператори, а також взаємозв’язки між цими класами.

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

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

Рисунок 3.2 – Об’єктна модель системи

Система складається з таких класів:

  1. GameObject - абстрактний клас-предок для всіх об’єктів, які відображаються на екрані, таких як Ball, Paddle, Block, які є основними об’єктами у грі;

Атрибути класу:

Sprite - зображення об’єкту;

Width - ширина об’єкта;

Height - висота об’єкта;

Position - позиція об’єкта на ігровому полі;

Bounds - границі об’єкту;

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

Клас Block атрибут BlockType, який відповідає за тип блоків. Вони можуть бути Easy – легкі, їх можна розбити с першої спроби, Normal – модно розбити з другої спроби, Hard – не можливо розбити.

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

Та має методи:

Collide() метод, який перевіряє зіткнення блоків із кулькою.

ReflectHorizontal() – метод, змінює рух кулі після зіткнення із горизонтальною стороною.

ReflectVertical() - метод, змінює рух кулі після зіткнення із вертикальною стороною.

Move() – переміщує кулю, змінюючи її координати додаючи поточне прискорення.

Draw() – метод, виконує відображення кулі для нових позицій.

  1. Game – клас, який відображає всі об’єкти на екрані;

Initialize() – ініціалізація.

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

UnloadContent() – метод визволення пам’яті від об’єктів, які завантажувалися при виконанні методу LoadContent().

Draw() – метод, який виконує відображення усіх об’єктів у вікні, які необхідно відобразити у вікні.

Update() – метод оновлення інформації об об’єктах, при зміні їх координат або властивостей.

  1. Sound – клас, відповідальний за відтворення звуків та звукових спец ефектів;

Цей клас має один метод Play(), який програє звук удару, при зіткненні кульки з блоком.

  1. Level – містить у собі інформацію про поточний рівень, про загальну кількість рівнів та має метод для створення нових рівнів. До його атрибутів входять дані про поточний рівень(CurrentLevel), та загальну кількість рівнів(Count).

Методи класу:

  • CreateLevel() – метод, який створює рівень, прочитавши з файлу координати розміщення блоків задає їх позиції на рівні, які необхідно буде відобразити.

  • NextLevel() – метод, створює наступний рівень.

  • Update() – метод, проводить зміни рівня, при знищенні блоків.

  • Draw() – метод, відображення рівня на гральному полі.

  1. Menu – клас, відповідальний за відображення меню. Клас має декілька атрибутів, такі як Selected – це прапорець, перевірки чи обраний даний пункт; Name - ім’я пункту; Font - шрифт меню; Position - позиція де буде відображено меню; baseColor - колір пункту, який не обраний; selectedColor – колір у яким буде відображений обраний пункт меню; MenuList – загальна кількість пунктів, які є в меню.

Методи цього класу:

- Update() – метод, який визивається при переключені з одного пункту меню на інший, та обчислює який пункт обраний на даний момент.

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

- SelectItem() - метод, який записує обраний пункт.

  1. Player – клас, який описує гравця.

Він має такі атрибути:

Lives - кількість життів гравця;

Level - рівень на якому знаходиться гравець;

Points - кількість балів, які отримав гравець та прапорці, гравець пройшов рівень чи ні(Win), програв чи ні(Lose).

  1. GameState – клас, відповідає ігрові стани.

Цей клас має такі атрибути:

Game – гравець, зараз грає;

Pause – зупинка гри;

Menu - гравець, зараз в меню

4. Опис програмної реалізації

4.1 Реалізація взаємодії між гравцем та системою

В ході курсової роботи мною реалізована комп’ютерна гра «Арканоід». В розробці було вжито деякі особистості, на яких я би хотів зупинити увагу.

Реалізації взаємодії між гравцем та системою був розроблений за допомогою Microsoft XNA Game Studio, яка є додатком для Microsoft Visual Studio. XNA Game Studio - інтегроване середовище розробки для розробки ігор.

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

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

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

Тести підключаються до гри, коли з'являється щось іграбельне. Це може бути один рівень або підмножина ігор, що може використовуватися в будь-яких розумних межах. На ранньому етапі тестування гри віднімає відносно малу частку часу. У міру наближення розробки до кінця, гра може почати відбирати для тестів весь час - і навіть понаднормово - оскільки тести намагаються охопити і протестувати нові можливості, для яких існують тести регресії. Сьогодні тестування є життєво важливим для ігор, оскільки, в силу складності більшості з них, одна єдина зміна може призвести до катастрофічних наслідків.

4.2 Алгоритм відбиття м’яча

Цей алгоритм був реалізований для розрахунку наступних координат м’яча при зіткненні з іншими об’єктами. За основу був взятий закон відбиття світла, за яким потім були реалізовані відповідні функції.

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

Рисунок 4.1 – Закон відображення

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

4.3 Розробка бібліотеки

Для використання класів в системі була розроблена спеціальна бібліотека «Arkanoid».

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

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5138
Авторов
на СтудИзбе
443
Средний доход
с одного платного файла
Обучение Подробнее