|
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
|
||||||
Взаимоотношение объектов без использования static18.12.2013, 16:11. Показов 1211. Ответов 14
Метки нет (Все метки)
Вот моя проблема почему задал статику:
У меня Мейн класс, в нем создан екземпляр класса HERO и екземпляр класса Main_inventar.
Добавлено через 5 минут Не сделав тот-же инвентарь паблик статик, как я могу к конкретному единственному екземпляру инвентаря обратится с класса героя?
0
|
||||||
| 18.12.2013, 16:11 | |
|
Ответы с готовыми решениями:
14
Как задать взаимоотношение объектов друг-враг?
|
|
16 / 16 / 0
Регистрация: 08.01.2011
Сообщений: 183
|
|
| 18.12.2013, 18:27 | |
|
Через этот конкретный единственный экземпляр класса
0
|
|
|
Модератор
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
|
||
| 18.12.2013, 18:48 | ||
|
Статическими нужно создавать объекты, к которым необходим глобальный доступ. Например, у вас есть класс, который отвечает за воспроизведение звуков. Им могут пользоваться и NPC, и кнопка и чуть ли не каждый встречный. В этом случае - да, это может быть оправдано. В вашем случае это скорее всего проблема проектирования программы. Доступ к параметрам инвентаря и героя нужен из каких классов? Какие данные при этом вы получаете?
0
|
||
|
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
|
||
| 18.12.2013, 19:14 [ТС] | ||
|
1) Класс MyLevelContactListener - класс отвечающий за проверку столкновений разных тел между собой. При контакте Героя с Коинтом (деньги, оружие и тд) класс уже обращается к статик инвентарю, дабы всунуть в его массив новый коинт (Как тут статик паблик обойти? Экземпляр этого инвентаря напомню создается в Мейне) 2) В инвентаре например вручную мышкой выбираю новый текущий предмет, который должен поместится в руку герою. Опять-же как без статик паблика _hero (создан также в 1 екземпляре в Мейне) я к нему обращусь и переприсвою параметр Героя?
0
|
||
|
Модератор
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
|
||
| 18.12.2013, 20:27 | ||
|
Как бы организовал я. Персонаж ходит, находит какие-то предметы. При этом в модель отправляется "сигнал" (его природа - отдельная тема), там меняются данные. Допустим зашли в инвентарь, там что-то поменяли, опять же данные меняем в моделе. При изменении модели она шлет событие о том, что произошло, все заинтересованные при этом меняют себя. Про модель и пр. прочитайте про MVC Только нужно понимать особенности флеша.
0
|
||
|
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
|
|
| 18.12.2013, 22:54 [ТС] | |
|
MVC погрыз нормально. Разделение модели, вювера и контроллера понятно. Передавать ссылку на екземпляр - как я понимаю вязать складовые МВЦ в мейне этими ссылками. Типа создал в мейне экземпляр _hero, а потом ссылку на неё передать во все конструкторы классов, которые будут взаимодействовать с хиро? Это конечно один из вариантов. Единственное что отличает мой проект от мвц, так это то что я не делил каждый элемент на 3 складовые (не делал 3 отдкльных класса на тот-же инвентарь, героя, нпц и тд).
Вобщем в итоге вывод один - что-бы идин класс мог обращатся к параметрам экземпляра другого класса - обязательно передавать в конструктор ссылку на экземпляр?
0
|
|
|
Модератор
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
|
||||||||
| 18.12.2013, 23:19 | ||||||||
Пока, наблюдая вашу задачу не вижу необходимости в "складировании". _hero - у вас это модель или вью? Если вью, то ссылку на нее должны содержать только родители и/или контроллер.
1
|
||||||||
|
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
|
||
| 18.12.2013, 23:37 [ТС] | ||
|
0
|
||
|
Модератор
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
|
|
| 19.12.2013, 00:28 | |
|
Wells77, модель - данные. Зачем ей знать про существование каких-то там еще объектов? Вью что-то от модели необходимо - сама возьмет. А для модели это лишний груз, помимо данных знать что-то о представлении.
0
|
|
|
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
|
|
| 19.12.2013, 11:00 [ТС] | |
|
Передаю модели ссылку на вью потому: когда даные в модели меняются, сразу диспатчу событие апдейта на вью по этой ссылке. Такой механизм во-всяком случае реализован в учебнике по MVC. Или как вы даете понять вьюверу что пора визуально менятся когда в модели даные поменялись?
0
|
|
|
Модератор
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
|
||||
| 19.12.2013, 14:31 | ||||
|
0
|
||||
|
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
|
|||||||||||||
| 19.12.2013, 14:43 [ТС] | |||||||||||||
0
|
|||||||||||||
|
254 / 238 / 50
Регистрация: 20.12.2011
Сообщений: 707
|
||
| 19.12.2013, 14:56 | ||
|
0
|
||
|
Модератор
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
|
||
| 19.12.2013, 15:16 | ||
|
Theoryofgames, но ведь модель не находится (не должна) находиться в списке отображения, поэтому ваш пример не в тему.
1
|
||
| 19.12.2013, 16:45 | |
|
0
|
|
| 19.12.2013, 16:45 | |
|
Помогаю со студенческими работами здесь
15
Создание базы данных без использования объектов и подходов БД
Создание игры "Викторина", без использования объектов Static - примеры использования Преимущество использования static Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|