Движок Сonstuct2, або ООП в дії
За вікном пролітає пожовкле листя, ДІІТ у ранковому тумані… На годиннику вже більше, ніж восьма – студенти працюють над розробкою програм: дехто – процедурних, а от другий курс – об’єктно-орієнтованих. Проте для молодих людей, які лише вчаться, ООП річ непроста. І головне питання: для чого? Чому не процедурне програмування, просте та зрозуміле. Треба розібратися!

Трохи про ООП

Суть об’єктно-орієнтованого підходу полягає у тому, що програміст створює типи даних – класи, які описують деякі сутності, їх поведінку, операції над ними. Клас включає опис атрибутів (змінних) та методів (функцій). Екземпляри – об’єкти класу – мають однакові властивості-атрибути, але різні їх значення. Наприклад, клас “Кіт”, створений для опису реальної сутності – кота – може включати такі атрибути: ім’я, вік, вага, стать, порода. А от об’єкт, що відповідає, наприклад, сусідському коту, характеризується певними значеннями цих атрибутів: ім’я=”Борис”, вік=2, вага=7.5… Є ще статичні атрибути, вони мають однакове значення для всіх об’єктів: так у всіх котів чотири лапи та один хвіст (про сумні випадки не будемо…).
Та який з цього зиск? Як би це побачити не в буквах, а більш яскраво? Все просто: Constuct2 базується саме на засадах ООП (хоча можливо десь і не строго), а ще – дозволяє створювати ігри. Цікаво – так, корисно – звісно! Поєднаємо?!

Гейм-дизайн, або з чого починається тут робота

Для розробки ігор з GUI можна використати Constuct2 – безкоштовний графічний движок від Scirra. Кожна гра є проектом. В інтерфейсі Constuct2 проект відображається: ліворуч – властивості об’єкта або проекту; по-центру – карта рівня гри та листи для програмування; праворуч – склад проекту та перелік об’єктів.

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

Текстури можна малювати і в самому Constuct2. Вони можуть буди представлені окремими графічними файлами та спрайтами (або таблицями спрайтів, як на малюнку вище), які розкадровують рух персонажу гри або іншу його дію, або просто зміну ландшафту в часі. Якщо є спрайт, то можна зробити анімацію дії, при цьому її якість буде залишити від кількості та ступеня деталізації кадрів.
Обмежень на жанр ігор не існує: platformer, tds, shooter, clicker etc. Є текстури – створюємо гру. Головну роль тут відіграють дві речі: зовнішній вигляд та логіка (про це трохи згодом).

Об’єкти та їх копії
Як раніше було зазначено, текстури потрапляють у проект простим перетягуванням (з вікна провідника до вікна движку). Перетягнуті текстури стають об’єктами, а це значить що у них є атрибути, які тут називаються властивостями: розмір, кут руху, позиція (координати) тощо. А ще ми можемо додати нові атрибути, при цьому вони стають статичними. Наприклад, HP для гравця-стрільця чи ворога-зомбі або score, щоб рахувати у платформері скільки «Маріо» зібрав монеток.
Для об’єкту може бути задана поведінка – це вже реалізований певний алгоритм. Наприклад, якщо в нас гра жанру tds, то було б добре, щоб наш персонаж був завжди у фокусі камери гри, а ще – щоб ходив у різні напрями, а керувати ним можна було за допомогою клавіатури. Програмувати це не потрібне, просто переходимо у вікно об’єктів та додаємо поведінки (клацнувши правою кнопкою миші), як показано нижче.

Об’єкти можна копіювати. Навіщо? Ну, наприклад, коли у tds чи shooter потрібно багато ворогів, їх можна не створювати поодинці, а копіювати. Те саме з ландшафтними текстурами. Та слід пам’ятати, що всі копії об’єкта – мають однакові значення статичних атрибутів (які ми самі додали та яким надали початкове значення) і однакову поведінку. Так, якщо у грі є вороги-зомбі, які створені шляхом копіювання, то всі вони ведуть себе однаково. Наприклад, вони всі будуть переслідувати персонажа гравця. Зомбі можуть мати однаковий рівень здоров’я (HP, який ми визначимо – статичний атрибут), але різні позиції (значення «звичайних» атрибутів).
«Об’єкт» в Constuct2 включає в себе атрибути та поведінку. Однак те, що тут зветься об’єктом, більше схоже на клас в ООП. А от «копії» – це класичні об’єкт. Але принцип інкапсуляції працює (так-так, саме те страшне слово з ООП, що ви чули на лекціях з програмування).

А де логіка?
Коли все намальовано і розкладено по полицям, можна програмувати логіку гри. Якщо ми не зовсім володіємо мовами програмування або зовсім не володіємо, або ж у нас банальний брак часу, то візуально-подієве програмування знову приходить на поміч. Все просто: подія – дія. Наприклад, нижче приведено «код», що дозволяє персонажу наводити приціл та стріляти за допомогою миші. При цьому якщо влучимо в ящик, він буде знищений, а якщо у стіну – знищиться патрон. А ще цей код виводить кількість ворогів і прибирає звичний курсор.

Так багато всього вмістилося у п’ять подій.
Події можуть бути визначеними для «Системи» – об’єкта, що відповідає за рівень гри в цілому; а також для об’єктів-текстур та для об’єктів інтерфейсу: миші, клавіатури, touch... (взагалі там можна багато чого додати). Подія визначає коли треба щось робити, а дія – що саме робити. Ми просто обираємо їх з переліку, який доволі великий, та ще й розширюваний. А алгоритми виконання – то вже справа не наша, тут про все піклується движок.

От і виявили, що розказують на лекціях дійсно корисні речі, життєздатні. А написати свою гру – легко – ТиЖПрограміст ;)

// Олена Куроп'ятник
Размещено: 29 октября 2017
НОВОСТИ И СОБЫТИЯ
Какие важные события произошли, что интересного ожидается. Будьте в курсе, участвуйте, делитесь впечатлениями!
Красно-синие цвета в нашем сердце навсегда
«Кубок Ректора» по мини-футболу — традиционно престижнейшее спортивное соревнование в ДИИТе. В этом году наша команда сыграла очень ярко, хоть формально и не заняла высокого места. Многие говорили о том, что выход в полуфинал определили, увы, не только спортивные факторы. Но как бы там ни было, игра команды «ТК» вызывает искреннюю гордость у ее болельщиков, а поддержка болельщиков — ответную благодарность у геройски сражавшихся футболистов. Кто рискнет усомниться, что это главный и абсолютно позитивный итог? 3 победы из четырёх интереснейших игр 22 забитых гола И все это без замен! Таким для команды факультета «Техническая кибернетика» стал Кубок Ректора 2016. Этого турнира…
Первая практика
Завершилась студенческая страда: наконец-то сданы текущие сроки, написаны модульные контрольные. И теперь в куда более спокойном режиме можно заняться практическим изучением будущей специальности. У первокурсников кафедры ЭВМ учебная практика посвящена программированию. Об их впечатлениях рассказывает студентка пока еще 913 группы Настя Стадник. Практика! Cлово, которое пугало большинство первокурсников, не знакомых с этим родом деятельности. Они ходили стайками, шептались и с опаской поглядывали на календарь, оповещавший, что неизвестное близко. Первокурсников вообще многое пугает, и практика — последний рубеж первого курса — не стала исключением. Но с самого первого дня учебной…
Прикафедральный кружок "Юный поЭт"
немного подробностей об этом видео: По правде говоря первоначальной идеей была в общем-то и не идея, а по сути банальщина: подставить под данные преподавателями ответы - левые вопросы, причем, что именно подставлять, было совершенно не ясно :) Но, поскольку Сан Палыч во время интервью сказал, что ваша идея мне понятна, дав, собственно, понять, что это не очень интересно (что по сути понимали и мы ;) ), а Денис Александрович, как партизан на допросе, всячески юлил и уходил от диалога, давая либо односложные либо пространные ответы (хотя все-таки попался :) ) получилось совершенно не то, что задумывалось. И хорошо, что так получилось! Итак, завлекал преподавателей в аудиторию: А.Б. не боялся задавать вопросы, глядя прямо в глаза Д.А. и другим, а также голос за кадром: Вова К. всячески поддерживал всех причастных: Таня К. рифмоплетствовал и монтажировал: Шурик
49000 Днепр, Украина
улица Лазаряна 2, ДИИТ
Телефон деканата: +38 (056) 373-15-52
Кибер Академия
Факультет «Техническая кибернетика» ДИИТа
Так ли часто мы говорим по душам, в особенности, если велика разница в возрасте?

А ведь это важно и необходимо: если общение идет на равных, то младшим и старшим наверняка есть, чем поделиться друг с другом.

Наш клуб задуман именно как место для подобного общения. Между преподавателями и студентами в первую очередь - но не только.
© 1965-2020 ФАКУЛЬТЕТ «ТЕХНИЧЕСКАЯ КИБЕРНЕТИКА» ДИИТа