GameObject, DynamicGameObject і Cannon – РОЗРОБКА ІГОР ДЛЯ ОС ANDROID

Почнемо зі статичного, або базового, випадку в лістингу 87

Лістинг 87 GameObjectJava, статичний ігровий обєкт з позицією і межами

Кожен обєкт в нашій грі має позицію, яка збігається з його центром Ми також дозволяємо кожному обєкту мати одну обмежуючу фігуру – в даному випадку прямокутник У конструкторі визначимо позицію і обмежує фігуру (яка зосереджена навколо центру обєкта) відповідно до його параметрами

Для динамічних обєктів, тобто обєктів, що рухаються, нам також необхідно відстежувати швидкість і прискорення (якщо вони прискорюються самі по собі, наприклад мотор або двигун) У лістингу 88 показаний код для класу DynamicGameObject

Лістинг 88 DynamicGameObjectjava: розширення GameObject при додаванні вектора швидкості і прискорення

Ми доповнюємо клас GameOb ject, щоб він успадковував члени позиції і кордонів Додатково створюємо вектори швидкості і прискорення Новий динамічний ігровий обєкт має нульові швидкість і прискорення після ініціалізації

У нашому прикладі з гарматним ядром є гармата, ядро ​​і мішені Гарматне ядро ​​є Dynami cGameObject, оскільки воно рухається згідно з нашою простий фізичної моделі Мішені статичні і можуть бути реалізовані з використанням стандартного GameOb ject Сама гармата може бути реалізована за допомогою класу GameOb ject З класу GameOb ject ми зробимо клас Cannon і додамо поле, що містить поточний кут нахилу гармати Код приведений в лістингу 89

Лістинг 89 Cannonjava: розширення GameObject при введенні Angle

Так ми красиво інкапсуліруем всі дані, необхідні для подання обєкта в нашому світі Кожен раз, коли нам потрібен обєкт певного виду, наприклад гармата, ми можемо просто витягати його з GameObject, якщо це статичний обєкт, або з Dynami cGameObject, якщо нього є швидкість і прискорення

ПРИМІТКА

Надлишок розширень класів може призвести до зайвого головного болю і непривабливою архітектурі коду Не використовуйте доповнення тільки заради того, щоб використовувати Проста ієрархія класів, яку ми застосовували вище, не біда, але не варто дозволяти їй ставати глибше (наприклад, не варто доповнювати клас Cannon) Існують альтернативні уявлення ігрових обєктів, які дозволяють позбутися від усього спадкування завдяки правильній композиції Однак для наших цілей і простого доповнення більш ніж достатньо Якщо ви хочете більше дізнатися про інші способи представлення, пошукайте в Інтернеті статті про складові обєктах, або домішках

Джерело: Mario Zechner / Маріо Цехнер, «Програмування ігор під Android», пров Єгор Сидорович, Євген зазноби, Видавництво «Пітер»

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*