Форум программистов, компьютерный форум, киберфорум
ООП и паттерны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 1
Регистрация: 15.12.2015
Сообщений: 31

Взаимодействие персонажа и карты в игрушке

18.01.2022, 00:36. Показов 1931. Ответов 6

Студворк — интернет-сервис помощи студентам
Времени суток добрейшего!

Значит-ся. Язык - C++. Игрушка. Пошаговая. на клетчатом поле. (что-бы был хоть какой-то контекст).

Есть класс Level. Хранит в себе само игровое поле, указатели на объекты с их координатами и проч. ; среди такового - my_pathfinding_layout, представляющий из себя двумерный массив булей : где может ступать нога человека, а где - нифига. Этот лэйаут обновляется при каждом соответствующем изменении в Level-е.

Есть класс Character. Хранит персонажей, их координаты, текстуры etc.

Есть класс Action. Универсальный класс прародитель, который подтыкаеться к кнопкам ( позволю себе не расписывать UI), и позволяет им делать вещи. Он-же подтыкаеться к персонажам ( и в последствии - и к их кнопкам), и дает делать вещи и им.

Теперь, собственно вопрос:
У нас есть подкласс Action-а Walk. Он, ожидаемо, позволяет персонажу переместиться с одной клетки на другую. Но что-бы определить, куда персонаж может переместиться, нужно осуществить Pathfinding. Кто должен его делать?

Точно не персонаж, ибо плевать он хотел на pathfinding_layout - его это не касается. Да и вообще, Action-ы действуют на персонажей, а не являются их частями.
По идее - не Level. Ему тоже пофиг и на Action-ы, и на Character-ов. Ну нет у него необходимости владеть паthфайндингом, не его это компетенция.
Но, блин, и не Walk ведь! Ибо у него нет никакого морального права получать доступ к pathfinding layout-у, ибо это свойство левела. И, даже если забить на последний факт, это что-же, для каждого подобного Action-а по новой ваять весь pathfinding?

Сам опыт объектно ориентированной разработки имею малый, первый ( сравнительно) крупный проект. Посоветуйте, люди добрые!
(Если чего непонятно сказал - спрашивайте, все поясню.)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.01.2022, 00:36
Ответы с готовыми решениями:

Взаимодействие скрипта триггера со скриптом персонажа
Имеется сцена StrategyLike, на которой могут находиться несколько Плееров, в их скриптах есть инт переменная, отвечающаа за команду, за...

Взаимодействие персонажа с врагом (исключение отталкивание персонажем врага)
Персонаж отталкивает врага при столкновении с ним .И там и там стоят коллайдеры, понятно не триггеры.Как убрать этот эффект?Нужно что бы...

[Проблема]Взаимодействие внешней звуковой карты+ микрофона с геймпадом dualshock 4
Доброго времени суток. Столкнулся с проблемкой, решение которой не смог найти в интернете, мб знающие люди помогут советом. В общем... ...

6
фрилансер
 Аватар для Алексей1153
6440 / 5634 / 1127
Регистрация: 11.10.2019
Сообщений: 14,980
18.01.2022, 06:52
TiARETiK, сделай просто глобальную функцию, которая принимает ссылку на поле и точки начала и конца. Возвращает путь
0
0 / 0 / 1
Регистрация: 15.12.2015
Сообщений: 31
18.01.2022, 10:49  [ТС]
Алексей1153, а не будет духовным провалом тот факт, что у нас валяется в пустоте функция, не являющаяся методом класса? И все еще, а кто ее вызывать будет? Action или Level?
0
фрилансер
 Аватар для Алексей1153
6440 / 5634 / 1127
Регистрация: 11.10.2019
Сообщений: 14,980
18.01.2022, 11:08
TiARETiK, не в пустоте, а в глобальном неймспейсе. Ну, если сильно хочется, сделай статическую функцию в классе Conductor

вызывать может кто угодно

Добавлено через 36 секунд
Цитата Сообщение от TiARETiK Посмотреть сообщение
на клетчатом поле
а вообще, по логике, эту функцию нужно разместить в класса этого поля
0
0 / 0 / 1
Регистрация: 15.12.2015
Сообщений: 31
18.01.2022, 11:39  [ТС]
Алексей1153, ок, спасибо!
Когда срублю мильон мильонов долларов на игрушке, вспомню тебя добрым словом)
0
фрилансер
 Аватар для Алексей1153
6440 / 5634 / 1127
Регистрация: 11.10.2019
Сообщений: 14,980
18.01.2022, 11:42
Лучший ответ Сообщение было отмечено TiARETiK как решение

Решение

TiARETiK, да не вопрос!
1
 Аватар для IamRain
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,224
18.01.2022, 13:16
Цитата Сообщение от TiARETiK Посмотреть сообщение
среди такового - my_pathfinding_layout, представляющий из себя двумерный массив булей : где может ступать нога человека, а где - нифига.
То есть этот pathfinding_layout - это состояние текущего level-а, которое может меняться после хода каждого из игроков.
Соответственно, метод определения возможных направлений движения для конкретного игрока можно добавить сюда, то есть это часть движка игры.
Так что вычисляем все производные данные исходя из состояния самого Level-а.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.01.2022, 13:16
Помогаю со студенческими работами здесь

Звук в игрушке
Здравствуйте! Пишу классический арканойд. Встал вопрос о воспроизведении звуков. Есть код : NSURL * pathURL = ...

Стрельба в игрушке
Нужно сделать стрельбу в игрушке (платформер, вид сбоку), сам я не особо догадываюсь как это делать, поэтому скопипастил код стрельбы, но...

Звук в игрушке
Добрый день! Хочу сделать звуковые эффекты по кнопке. Но не могу найти как это сделать, схема или какая-то запись ? как можно...

Нужно задать перемещение в игрушке
Вообщем дело вот в чем. Нужно задать перемещение в игрушке. Ниже небольшой пример, в качестве персонажа Button. Проблема в том, что...

Собственные звуки в музыкальной игрушке
Ребята,может кто знает принцип введения звуков в устройство музыкальной плюшевой игрушки.Хочу сделать собственный звуки в музыкальной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru