14 / 14 / 2
Регистрация: 21.10.2012
Сообщений: 140
|
|||||||||||||||||||||||||||||||
1 | |||||||||||||||||||||||||||||||
Как заставить свой объект стрелять?27.02.2013, 01:01. Показов 1702. Ответов 15
Метки нет (Все метки)
Здравствуйте... Пытаюсь написать игру типа Космической дуэли... Застопарился на стрельбе... Точнее как заставить свой объект стрелять... Подскажите как можно организовать данный процесс. Или где можно про это почитать?
0
|
27.02.2013, 01:01 | |
Ответы с готовыми решениями:
15
Создать объект прототип робота, который изготовлен из определенного материала, имеет имя, пол, оружие, умеет стрелять, здороваться и прощаться Как заставить Excel не реагировать «зловещими» сообщениями на свой же combobox Как заставить свой php-файл в wordpress видеть константы? Как заставить объект следить за курсором? |
Кандёхаем веселее!
296 / 328 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
|
|
27.02.2013, 05:39 | 2 |
Я бы создал объекты для "пуль"(снарядов), и обрабатывал бы их так же, как и корабли.
1
|
Кандёхаем веселее!
296 / 328 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
|
|
27.02.2013, 07:20 | 5 |
Но в этом случае очень удобно, как по мне: например, создаем базовый класс игрового оъекта, наследуем от него все виды врагов, пуль, препятствий... Потом создать массив базовых классов(текущие объекты на экране), и в цикле реализовать всю игровую динамику, в другом цикле - рисование.
Не знаю, ка вы, но я без ООП при написании 2D космической стрелялки голову бы себе сломал.
0
|
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
|
|
27.02.2013, 10:39 | 6 |
Чего то никто не предложил создать класс Guns например с виртуальным методом shot(), в котором будут обрабатываться действия с пулями и снарядами.
от Guns наследовать классы типа LaserGuns. Отношения Guns с классом "Пули" - агрегация. Так как пули могут существовать без оружия. Но если у нас такие сложные пули для которых существует целый класс то для обоймы нужны использовать stack (в классе Guns) из stl. Эту архитектуру я черпаю из описания предметной области.(которую можно описать на UML например) а про реализацию такого функционала как выстрел можно почитать тут Так как выстрел это пересечение луча с полигоном. лучше прочитать все предшествующее уроки. а тут всё что я думаю о разработчиках игр
0
|
14 / 14 / 2
Регистрация: 21.10.2012
Сообщений: 140
|
|
27.02.2013, 11:56 [ТС] | 7 |
0
|
14 / 14 / 2
Регистрация: 21.10.2012
Сообщений: 140
|
|
27.02.2013, 12:03 [ТС] | 8 |
Да совсем забыл -- эта игрушка в консоли)) так что вся графика - это символы))
0
|
Кандёхаем веселее!
296 / 328 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
|
||||||
27.02.2013, 13:29 | 9 | |||||
В консоли через WinAPI можно рисовать:
1
|
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
|
|
27.02.2013, 14:14 | 10 |
по хорошему, надо писать так чтобы логику без труда можно было перенести на графику(2d например).
я бы ещё отделил классы которые зависят от винды от общей логики игры. а про диаграммы классов на UML слышали? ( если бы нарисовали её, я бы вас быстрее тогда понял)
0
|
Кандёхаем веселее!
296 / 328 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
|
|
27.02.2013, 23:18 | 12 |
Вроде все понятно: X,Y - координаты; SpeedX, SpeedY описывают движение(вектор - знак, скорость - модуль), Move() - перемещает объект на SpeedX и SpeedY.
SAUtrade, . Если не злоупотреблять, не вижу ничего плохого в наследовании. Например, если в игре не будет штук, которые не двигаются, класс MovableItem не нужен, а его свойства перенести в корневой.
1
|
Кандёхаем веселее!
296 / 328 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
|
|
27.02.2013, 23:27 | 14 |
Ну, тогда класс Movable лишний, если только у недвигающихся не будет каких-нибудь свойств, не присущих двигающимся.
0
|
Кандёхаем веселее!
296 / 328 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
|
|
28.02.2013, 01:10 | 16 |
Дык я не советую использовать как можно больше ООПшных фишек, главное - построить удобный внутренний интерфейс для написания хорошей проги. А наследование, в данном случае - удобный инструмент.
Например: хотим сделать пулю с ускорением - унаследованый переопределяет метод Move() и изменяет там SpeedX; При реализации "корабля-босса" тоже поможет наследование, он уже будет не такой, как "обычные", но все-таки с базовыми свойствами корабля.
1
|
28.02.2013, 01:10 | |
28.02.2013, 01:10 | |
Помогаю со студенческими работами здесь
16
(A*) Как заставить объект двигаться по точкам? Как заставить объект shape двигаться Как заставить checkbox возвращать объект? Как заставить объект толкать игрока в Unity3D Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |