ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.06.2019

Просмотров: 1731

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

ВСТУП

1.1 Процес розробки вiдеоiгор

1.2 Аналіз існуючих iгор в жанрi "Tower Defense"

1.3 Розробка математичної моделі комп'ютерної гри-стратегії "Tower Defense"»

1.4 Розробка структурно–функціональної моделі ПК комп'ютерної гри-стратегії "Tower Defense"

На рис. 1.7 зображена контекстна SADT-діаграма нульового рівня для ПК комп'ютерної гри-стратегії "Tower Defense".

Для більш точного проектування ПК комп'ютерної гри-стратегії "Tower Defense" деталізуємо SDAT–діаграму нульового рівня.

1.5 Розробка технічного завдання на створення ПК комп'ютерної гри-стратегії "Tower Defense"

1.6 Проектування комп'ютерної гри-стратегії "Tower Defense".

1.6.1 Розробка діаграми прецедентів для комп'ютерної гри-стратегії "Tower Defense"

ПЗ – сукупність програм системи обробки інформації і програмних документів, необхідних для експлуатації цих програм [16].

Загальна схема використання ПК комп'ютерної гри-стратегії "Tower Defense". Користувач вибирає позиції веж залежно рівня та його монет, тип веж та стартує гру. ПК загружає хвилю противників, розраховує їх маршрут та випускає на карту.

Рисунок 1.9 – Діаграма прецедентів ПК комп'ютерної гри-стратегії "Tower Defense".

1.6.2 Розробка діаграми класів для ПК комп'ютерної гри-стратегії "Tower Defense".

У предметної області програмного комплексу комп'ютерної гри-стратегії "Tower Defense" взаємодіють наступні класи: Противники, Ігровий світ, Вежі, Рівні, Алгоритм пошуку шляху, Кулi, Користувач.

1.6.3 Розробка діаграми послідовності для ПК комп'ютерної гри-стратегії "Tower Defense".

1.6.4 Розробка інформаційної моделі предметної області «ПК комп'ютерної гри-стратегії "Tower Defense"»

1.7 Засоби розробки ПК і їх порівняльний аналіз

2.1 Результати поглибленої розробки окремих модулів комп'ютерної гри-стратегії "Tower Defense".

2.2 Елементи інтерфейсу комп'ютерної гри-стратегії "Tower Defense"

2.3 Структура и функціональне призначення окремих модулів баз даних комп'ютерної гри-стратегії "Tower Defense"

3 ЕКОНОМІЧНІ РОЗРАХУНКИ

4 ОХОРОНА ПРАЦІ

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

ДОДАТОК А

ДОДАТОК Б

ДОДАТОК В

1.6.4 Розробка інформаційної моделі предметної області «ПК комп'ютерної гри-стратегії "Tower Defense"»



ER-модель використовується при високорівневому (концептуальному) проектуванні баз даних. З її допомогою можна виділити ключові сутності і позначити зв'язки, які можуть встановлюватися між цими сутностями [19].

В ході аналізу предметної області «ПК комп'ютерної гри-стратегії "Tower Defense"» виділяється набір сутностей - об'єктів або явищ, інформація про які підлягає опису та зберігання в базі даних і зв'язків між сутностями.

Створюється діаграма виду «Сутність - Зв'язок». Враховуються ступінь зв'язку між сутностями («один - до - одному», «один - до - багатьох», «багато - до - багатьох»).

Для створення БД необхідно побудувати ER-діаграму (рис. 1.13) у вигляді сукупності зв'язків, сутностей і атрибутів.

Сутність «Рівень» представляє з себе сховище даних, яке містить інформацію про id рівня та сітку ландшафту рівня.

Сутність «Противник» представляє з себе сховище даних, яке містить інформацію про id хвилі противників та інформацію про самі хвилі.

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


Рисунок 1.13 – ER-діаграма предметної області «ПК комп'ютерної гри-стратегії "Tower Defense"»



Для розуміння логіки роботи предметної області, а також встановлення ступеня зв'язності і класу приналежності таблиць розроблена Діаграма ER-примірників. Розглянемо суті «Рівень», «Противник», «Ігрові ресурси». Графічну ілюстрацію цього можна побачити на рис. 1.14.


Рисунок 1.14 Діаграма ER-екземплярів


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

У таблиці 1.8 представлено буквене позначення атрибутів:


Таблиця 1.8 – Літерне позначення атрибутів

Літера

Позначення

A

id рівня

B

Сітка ландшафту

C

id хвилі протвників

D

Інформція хвиль

E

Кількість монет

F

Кількість життя


Нормальна форма Бойса — Кодда (НФБК) — нормальна форма використовується в нормалізації баз даних. Це трошки сильніша версія третьої нормальної форми (3НФ). Таблиця знаходиться в НФБК тоді і тільки тоді, коли для кожної її нетривіальної функціональної залежності X → Y, X це суперключ — тобто, X або потенційний ключ, або його над множина [20].

Функціональна залежність - це однозначна залежність, затабулірована у системах управління базами даних [21]. Представлена на рис. 1.15


D

C




E



F



Рисунок 1.15 – Діаграма ФЗ


R(A,B,C,D,E,F)


Перевірка ключів в НФБК:


Детермінанти Ключі


D

Не в НФБК

B

CA +

AEF +


Оскільки не кожен детермінант сам по собі ключ в відношенні, то дана таблиця не перебуває в НФБК.

Проведемо декомпозицію:


R(A,B,C,D,E,F)


R1(A,B) R(A,С,D,E,F)


R2(C,D) R(A,C,E,F)


R3(A,E,F) R(A,C)


Були отримані наступні відносини:


R1(A,B)

R2(C,D)

R3(A,E,F)

Тепер таблиця знаходиться в НФБК, а значить є основою для проектування БД для предметної області «ПК комп'ютерної гри-стратегії "Tower Defense"».



1.7 Засоби розробки ПК і їх порівняльний аналіз



Тема дипломного проекту – «ПК комп'ютерної гри-стратегії "Tower Defense"».

Javaоб'єктно-орієнтована мова програмування, випущена 1995 року компанією «Sun Microsystems» як основний компонент платформи Java. З 2009 року мовою займається компанія «Oracle», яка того року придбала «Sun Microsystems». В офіційній реалізації Java-програми компілюються у байт-код, який при виконанні інтерпретується віртуальною машиною для конкретної платформи [22].

Порівняння програмних продуктів (за десятибальною шкалою) наведено у таблиці 1.9.


Таблиця 1.9 – Порівняння програмних продуктів

Найменування критерію

PHP

JavaScript

Java

Kj

Динамічна типізація

9

8

6

0,10

Підтримка БД

6

6

7

0,10

Інтерпретатор командного рядка

9

7

8

0,20

Багатоплатформеність

7

8

9

0,15

Підтримка ООП

8

8

9

0,20

Наявність бібліотек для роботи з графікою і мультимедіа

6

8

9

0,10

Простота застосування

8

7

8

0,15


Експертна оцінка визначається за формулою (1.2):


я, (1.2)


де Qi – загальна оцінка програмного продукту;

n – кількість критеріїв;

Kj – ваговий коефіцієнт критерію;

aij – оцінка i – того програмного засобу по j – тим критерієм.

Розрахуємо загальні оцінки програмних засобів:

PHP:

Q=9*0,10+6*0,10+9*0,20+7*0,15+8*0,20+6*0,10+8*0,15=7.2.

JavaScript:

Q=8*0,10+6*0,10+7*0,20+8*0,15+8*0,20+8*0,10+7*0,15=7.45.

Java:

Q=6*0,10+7*0,10+8*0,20+9*0,15+9*0,20+9*0,10+8*0,15=8.05.


Як показав розрахунок, найбільш доцільно вибирати в якості засобу розробки мову програмування Java.

MySQL вільна реляційна система управління базами даних MySQL є рішенням для малих і середніх додатків. Зазвичай MySQL використовується як сервер, до якого звертаються локальні або видалені клієнти, проте в дистрибутив входить бібліотека внутрішнього сервера, що дозволяє включати MySQL в автономні програми.. Завдяки відкритій архітектурі і GPL-ліцензуванню, в СУБД MySQL постійно з'являються нові типи таблиць [23].

Порівняння СУБД (за десятибальною шкалою) наведено у таблиці 1.10.


Таблиця 1.10 – Порівняння СУБД

Найменування критерію

MySQL

Access

InterBase

Kj

Підтримка реляційної моделі даних

7

9

6

0,2

Технологія створення БД і об'єктів БД

8

7

5

0,2

Можливість створення локальної БД

9

8

7

0,1

Наявність вбудованої мови для розробки додатків

7

7

5

0,15

Підтримка стандарту SQL

7

6

9

0,1

Засоби для отримання звітів

7

8

3

0,1

Простота застосування

9

7

4

0,15

Експертна оцінка визначається за формулою (1.4) для кожної СУБД:

MySQL:


Q=7*0,20+8*0,20+9*0,10+7*0,15+7*0,10+7*0,10+9*0,15=7,7.


Access:


Q=9*0,20+7*0,20+8*0,10+7*0,15+6*0,10+8*0,10+7*0,15=7.5.


InterBase:


Q=6*0,20+5*0,20+7*0,10+5*0,15+9*0,10+3*0,10+4*0,15=5,45.


Як показав розрахунок, найбільш доцільно вибирати в якості СУБД MySQL.

Отже, для реалізації ПК для автоматизації з обліку даних про ремонт виробничих приміщень можна використовувати програмні засоби Java и MySQL.



  1. СПЕЦІАЛЬНА ЧАСТИНА




2.1 Результати поглибленої розробки окремих модулів комп'ютерної гри-стратегії "Tower Defense".


В даному ПК рівні розділені на дві категорії:

- сюжетні, які створені розробниками;

- кастомні, які створює користувач.

Сюжетні рівні знаходяться у таблиці Levels в базі даних з id 1…3. На рис. 2.1 представлено запит до бази даних, який витягує з неї сюжетні рівні.

public void loadLevel(int levelID) {

JsonArray jsonArray = new JsonArray();

try {

Gson gson = new Gson();

dataBaseHandler.openDatabase();

DatabaseCursor cursor = dataBaseHandler.rawQuery(loadQuery);

if (cursor.next())

jsonArray.addAll(gson.fromJson(cursor.getString(0), JsonArray.class));

for (int i = 0; i < jsonArray.size(); i++) {

JsonArray jsonElements = jsonArray.get(i).getAsJsonArray();

for (int j = 0; j < jsonElements.size(); j++) {

mapMask[i][j] = jsonElements.get(j).getAsInt();

if (!gameWorld.isEdit())

gameWorld.getGrid().get(i).get(j).setState(mapMask[i][j]);

}

}

dataBaseHandler.closeDatabase();

} catch (SQLiteGdxException e) {

e.printStackTrace();

}

}

Рисунок 2.1 – Звернення до рівню у базі даних






Кастомний рівень знаходиться у таблиці Levels з id 0. На рис. 2.2 представлена функція, яка зберігає рівень користувача у базу даних.

public void saveLevel() {

for (int i = 0; i < GameWorld.MAP_HEIGHT_MAX; i++)

for (int j = 0; j < GameWorld.MAP_WITH_MAX; j++)

mapMask[i][j] = GameWorld.getInstance().getEditGrid().get(i).get(j).getState();


Json json = new Json();

insertOrUpdateQuery = "UPDATE Levels SET content = '" + json.toJson(mapMask) + "' WHERE id = 0;";

GameWorld.getInstance().setShowSaveText(true);

super.saveLevel();

}

Рисунок 2.2 – Виклик методу saveLevel()


В іграх-стратегіях вороги представлені як хвилі з їх типом, кількістю, інтервалом початку та координатами. В даному ПК хвилі зберігаються у таблиці Waves з id рівня, котрий пов'язаний з id рівня в таблиці Levels. Розглянемо запит до бази даних, який витягує з неї хвилі противників по id рівня(levelId) на рис. 2.3.

public void init(int levelId) {

JsonArray jsonArray = new JsonArray();

String loadQuery = "SELECT content FROM Waves WHERE id = " + levelId;

try {

Gson gson = new Gson();

dataBaseHandler.openDatabase();

DatabaseCursor cursor = dataBaseHandler.rawQuery(loadQuery);

if (cursor.next())

jsonArray.addAll(gson.fromJson(cursor.getString(0), JsonArray.class));

for (int i = 0; i < jsonArray.size(); i++)

enemyWaves.add(gson.fromJson(jsonArray.get(i), EnemyWave.class));

dataBaseHandler.closeDatabase();

} catch (SQLiteGdxException e) {

e.printStackTrace(); } }

Рисунок 2.3 – Звернення до хвилі противників у базі даних

В іграх жанру «Оборона веж» вороги повинні мати маршрут, по якому вони будуть проходити по рівню. Для цього використовуються алгоритми пошуку маршруту. В ПК «Tower Defense» використаний «Хвильовий» алгоритм, який починає шукати маршрут з кінцевої точки. На вхід він приймає початкову та кінцеву точку, та використовує сітку рівня. На рис. 2.4 представлений метод алгоритму пошуку маршруту противників.



public ArrayList<Vector2> findWay(Vector2 start, Vector2 end) {

grid[(int)end.y][(int)end.x] = WATER_KEY;

int counter = 0;


while (counter < MAX_ITERATIONS) {

for (int y = 0; y < mapHeight; y++)

for (int x = 0; x < mapWidth; x++)

if (grid[y][x] == WATER_KEY)

goWater(x, y);


if (grid[(int)start.y][(int)start.x] == WATER_KEY)

return getWay(start, end);

counter++;

}


return new ArrayList<Vector2>();

}

Рисунок 2.4 – Метод алгоритму пошуку маршруту противників