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

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

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

Добавлен: 10.06.2019

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

Скачиваний: 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 ОХОРОНА ПРАЦІ

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

ДОДАТОК А

ДОДАТОК Б

ДОДАТОК В

Хвильовий алгоритм проходиться по всій сітці рівня на пошук маршруту від кінцевої до початкової точки. Він перевіряє клітинки, чи може ворог потрапити на цю чи іншу в напрямку початкової точки, та заповнює її своїм кодом по якому потім ПЗ може побачити, що ця клітинка находиться в маршруті ворога. На рис. 2.5 представлено метод goWater(x, y), який перевіряє клітки на карті.


private void goWater(int ax, int ay) {

// Если клеточка сверху свободна

if (inMap(ax, ay - 1) && checkCell(ax, ay - 1)) {

grid[ay - 1][ax] = WATER_KEY;

mapDirs.get(ay - 1).get(ax).x = ax;

mapDirs.get(ay - 1).get(ax).y = ay;

}


// Если клеточка слева свободна

if (inMap(ax - 1, ay) && checkCell(ax - 1, ay)) {

grid[ay][ax - 1] = WATER_KEY;

mapDirs.get(ay).get(ax - 1).x = ax;

mapDirs.get(ay).get(ax - 1).y = ay;

}


// Если клеточка снизу свободна

if (inMap(ax, ay + 1) && checkCell(ax, ay + 1)) {

grid[ay + 1][ax] = WATER_KEY;

mapDirs.get(ay + 1).get(ax).x = ax;

mapDirs.get(ay + 1).get(ax).y = ay;

}


// Есле клеточка справа свободна

if (inMap(ax + 1, ay) && checkCell(ax + 1, ay)) {

grid[ay][ax + 1] = WATER_KEY;

mapDirs.get(ay).get(ax + 1).x = ax;

mapDirs.get(ay).get(ax + 1).y = ay;

}

}

Рисунок 2.5 – Метод goWater(x, y)



Маршрут противників зберігається як список клітинок, по яким він буде проходити рівень. На рис. 2.6 представлений метод getWay(), який повертає противнику як раз цей список клітинок, тобто його маршрут.


private ArrayList<Vector2> getWay(Vector2 start, Vector2 end) {

ArrayList<Vector2> way = new ArrayList<Vector2>();

Vector2 p1 = new Vector2(start.x, start.y);

Vector2 p2 = new Vector2();


while (true) {

p2.x = mapDirs.get((int) p1.y).get((int) p1.x).x;

p2.y = mapDirs.get((int) p1.y).get((int) p1.x).y;


way.add(new Vector2(p2.x, p2.y));


p1.x = p2.x;

p1.y = p2.y;


if (p1.x == end.x && p1.y == end.y)

break;

}

return way;

}

Рисунок 2.6 – Метод getWay().



Вежі в «Tower Defense» мають два стани:

- стан покою(в цьому стані вежа прораховує відстань між собою та противниками і якщо ця відстань менша за суму половин радіусів веж та ворога, вежа переходить до стану атаки

- стан атаки(у цьому стані вежа обстрілює ворога, доки він находиться у полі досяжності)

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




if (idleDelay >= 5) {

ObjectController enemies = gameWorld.getEnemies();

int size = enemies.size();

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

if (Vector2.dst(getX(), getY(), ((EnemyBase)enemies.get(i)).getX(), ((EnemyBase)enemies.get(i)).getY()) <= attackRadius) {

enemyTarget = (EnemyBase) enemies.get(i);

state = ATTACK_STATE;

}

}

idleDelay = 0;

}

idleDelay++;

setRotation(getRotation() + 0.4f);

Рисунок 2.7 – Частина методу update() вежі у стані спокою



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

if (enemyTarget != null) {

setRotation((float) Amath.angle(getX(), getY(), enemyTarget.getX(), enemyTarget.getY()));

shootDelay--;

if (enemyTarget.isDead()) {

enemyTarget = null;

state = IDLE_STATE;

} else if (Vector2.dst(enemyTarget.getX(), enemyTarget.getY(), getX(), getY()) > attackRadius) {

enemyTarget = null;

state = IDLE_STATE;

} else

shoot();

} else

state = IDLE_STATE;

Рисунок 2.8 – Частина методу update() вежі у стані атаки




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


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

Рисунок 2.9 – Головне меню гри-стратегії «Tower Defense»


На рис. 2.10 представлено ігровий процес гри. Користувач повинен захищати свою базу, розташовуючи вежі на доступних для цього клітинках на карті. Щоб поставити вежу користувач повинен мати монети, число яких він може бачити у нижньому лівому куту, теж саме і про життя бази. Якщо у користувача не залишиться більше монет, він не зможе розташовувати вежі. Якщо у нього не залишиться більше життя, гра закінчена.

Рисунок 2.10 – Ігровий процес гри-стратегії «Tower Defense»

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

Рисунок 2.11 – Редагування рівня.


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

Рисунок 2.12 – Підменю нової гри





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



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

В даному ПК рівні зберігаються у таблиці Levels з полями id(id рівня) та content(json рядок сітці рівня). На рис. 2.13 представлена таблиця рівнів у базі даних, в якій на даний момент можна бачити перший сюжетній рівень с id = 1 та json рядком.


Рисунок 2.13 – Таблиця рівнів


Хвилі противників зберігаються в таблиці Waves з полями id(id рівня, котрий пов’язаний з id рівня в таблиці Levels) та waves(json рядок з інформацією про хвилю: тип ворога, кількість, інтервал, координати). На рис. 2.14 представлена таблиця хвиль противників, в якій на даний момент зберігаються хвилі першого сюжетного рівня.


2.14 – Таблиця хвиль противників







У користувача в даному ПК є своя таблиця в базі даних, в котрій зберігаються його життя(health) та монети(money). На рис. 2.15 представлена таблиця користувача.



Рисунок 2.15 – Таблиця користувача.







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



3.1. Розрахунок капітальних витрат на створення ПП «Комп'ютерної гри-стратегії "Tower Defense"»



Капіталовкладення у створення ПІ носять одноразовий характер і в умовах дипломного проектування визначаються за формулою:


(3.1)


К = 11275,62+13008 + 31521,06 = 55804,68 грн.


де К1 – витрати на обладнання, грн.;

К2 – витрати на ліцензійні програмні продукти, грн.;

К3 – витрати на створення ПІ, грн.


Витрати на обладнання – К1.

Витрати на обладнання включають вартість придбання:

  • комп'ютерів;

  • периферійних пристроїв;

  • засобів зв'язку та іншої оргтехніки з урахуванням витрат на транспортування і установку.


(3.2)


К1= 10999*1,01*1,015 = 11275,62 грн.


де Ni – кількість одиниць i-го обладнання, необхідного для реалізації ПІ (ЕОМ, принтерів, плоттерів та ін.), шт.;

Ci – ціна одиниці i-го обладнання, грн.;

n – загальна кількість різних видів обладнання;

k1 – коефіцієнт транспортно-заготівельних витрат, частки;

k2 – коефіцієнт збільшення витрат на виробничо-господарський інвентар, частки.


Для реалізації заданого проекту був придбаний ПК Qbox A0201. Ціна придбання – 10 999 грн.

https://hard.rozetka.com.ua/qbox_a0201/p26145801/


Витрати на ліцензійні програмні продукти – К2.

Витрати на ліцензійні програмні продукти К2 визначають за даними підприємства або з прайс–листів.

Було придбано необхідне програмне забезпечення:

Microsoft Windows 10 Professional 5659 грн.

https://soft.rozetka.com.ua/microsoft_fqc_09131/p3936301/

Adobe Photoshop CC – 650 грн.

http://www.adobe.com/ru/products/photoshop.html

Microsoft Office – 6699 грн.

https://www.microsoft.com/uk-ua/software-download/windows10


К2= 13008 грн.


Розрахунок витрат на створення ПІ – К3.


(3.3)


К3 = 18727,7 + 765 + 12028,36 = 31521,06 грн.


де З1 – витрати праці програмістів-розробників, грн.;

З2 – витрати комп'ютерного часу, грн.;

З3 – непрямі (накладні) витрати, грн.


1 Витрати праці програмістів-розробників – З1.


(3.4)


З1= 1*39,77*340*1,385 = 18727,7 грн.


де – кількість розробників k-й професії, чол.;

годинна зарплата розробника k-й професії, грн.;

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

Kзп – коефіцієнт нарахувань на фонд заробітної плати, частки;


Годинна зарплата розробника визначається за формулою:


(3.5)


ЗП год розр = 7000/176 = 39,77 грн.

де – місячна зарплата к-го розробника, грн.;

місячний фонд часу його роботи, год.


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

Розрахунок трудомісткості розробки для кожного розробника здійснюється за формулою:


(3.6)


де t1k , t2k, t3k. t4k, t5k – час, витрачений на кожному етапі розробки k-м розробником, год.


Таблиця 3.1 Час виконаних робіт

Етапи робіт

Зміст робіт

1 Технічне завдання

Коротка характеристика програми; основу і призначення розробки; вимоги до програми і програмної документації; стадії і етапи розробки програми; порядок контролю та приймання виконання.

2 Ескізний

проект

Попередня розробка структури вхідних та вихідних даних; уточнення методу розв'язання задачі; Розробка та опис загального алгоритму рішення; розробка техніко-економічного обґрунтування та пояснювальної записки.

3 Технічний

проект

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

4 Робочій проект

Опис програми на обраною мовою; налагодження; розробка методики випробувань; проведення попередніх випробувань (тестування); коригування програми; розробка програмної документації.

5 Впровадження

Підготовка і передача програми для супроводу; навчання персоналу використанню програми; внесення коригувань до програми і документацію.

ИТОГО

340



2 Витрати компютерного часу – З2.


(3.7)


З2 = 2,25*340 = 765 грн.


де Ск – собівартість комп'ютерного години, грн.;

Тпр – витрати комп'ютерного часу на розробку програми, час.


Собівартість комп'ютерного години обчислюється за формулою:


(3.8)


Ск = 2+0,15+0,1 = 2,25 грн


де СА – амортизаційні відрахування, грн.;

СЭ – енерговитрати, грн.;

СТО – витрати на техобслуговування, грн.


(3.9)


Са= (11275,62 *0,36904)/2080 = 2 грн.


де Сi – балансова вартість i-го обладнання, яке використовувалося для створення ПІ (ПК, принтера і т.п.), грн.;

Nа – річна норма амортизації i-го обладнання, частки;


(3.10)


Na = 1-(1127,562 /11275,62)^(1/5) = 0,36904


де - передбачувана ліквідаційна вартість обладнання (приймаємо 10% від початкової вартості);

Тэкспл – корисний термін експлуатації (приймаємо 5 років);

річний фонд часу роботи i-го обладнання, годину.


Сликв = 11275,62 *0,1 = 1127,562 грн.


Сума енерговитрат визначається за формулою:


(3.11)


Сэ= 231,69/100 * 0,065 = 0,15 грн.


де РЭ – витрата електроенергії, споживаної комп'ютером, год;

СкВт – вартість 1 кВт / год електроенергії, грн.;


Сума витрат на техобслуговування:


(3.12)


Сто= 18,18*0,0057 = 0,1 грн.


де – годинна зарплата працівника обслуговуючого обладнання, грн.;


Годинна зарплата працівника, який обслуговує обладнання, визначається за формулою:


(3.13)


ЗП обсл год = 3200/176 = 18,18 грн/час


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

місячний фонд часу його роботи, год.

 – періодичність обслуговування.


(3.14)


= 1/176 = 0,0057


де Nто – кількість обслуговувань обладнання в місяць;

місячний фонд часу роботи обладнання, год.


3 Непрямі витрати З3 изначаються за формулою:


, (3.15)


З3 = 9000+600+2428,36 = 12028,36 грн


де – вартість приміщення, грн;

С1 – витрати на утримання приміщень (на освітлення, опалення охорону і прибирання), грн. Складають 5-15% від вартості приміщень;

С2 інші витрати, грн. Складають 10% від вартості капітальних вкладень.


Для визначення вартості приміщення скористаємося такою формулою:


(3.16)


ОС зд = 20*150= 3000 грн.


де S – площа будівлі, приміщення, м2;

См2 - вартість 1 м2, грн.


Витрати на утримання приміщень розраховуються як:


С1 = 3000*0,1*2 = 600 грн.


Інші витрати:


С 2 = (11275,62 +13008)*0,1 = 2428,36 грн.