Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2015, 09:09   #1
Serg-Grin
Дивиджей
Пользователь
 
Аватар для Serg-Grin
 
Регистрация: 05.01.2009
Сообщений: 84
По умолчанию Состояние предметов

Здравствуйте многоуважаемые программисты. У меня такой вопрос.
Есть база предметов в массиве, для каждого прописаны характеристики. Пример:

Код:
Predmets[1].Name:='Повязка для волос'; // Имя предмета 
Predmets[1].Massa:=3; // Масса 
Predmets[1].Sila:=5; // Сила 
Predmets[1].Lovkost:=3; // Ловкость 
Predmets[1].Sostojanie:=10; // Состояние предмета 

Predmets[2].Name:='Накидка нищего'; 
Predmets[2].Massa:=5; 
Predmets[2].Sila:=7; 
Predmets[2].Lovkost:=5; 
Predmets[2].Sostojanie:=20;
И так все остальные предметы.
Допустим когда я покупаю какой-то предмет в торговца он добавляется в рюкзак. С рюкзака я могу надеть на персонажа. Если после боя с противником я проигрываю, состояние (sostojanie) предмета который надет на персонаже уменьшается на -1. Так вот в чем мой вопрос.
Если я куплю 2 одинаковых предмета, то состояние будет уменьшаться в двоих предметов сразу даже если один из этих предметов будет находится в рюкзаке. Как можно сделать так, чтобы состояние уменьшалось только на том предмете что надет на персонаже, и при снимании его с персонажа оставалось тоже самое состояние.
Заранее спасибо)
Впишите в google:
DVJ Serg-Grin
И вы услышите мои песни

Последний раз редактировалось Stilet; 19.09.2015 в 11:15.
Serg-Grin вне форума Ответить с цитированием
Старый 19.09.2015, 09:25   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Путано. Если задача о рюкзаке, то она уже давно решена. Если Рюкзак, по вместимости, безграничен, в чём проблема?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 19.09.2015, 09:45   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Каждый купленный предмет должен быть отдельным объектом и тогда изменения его свойств не будет затрагивать другие копии этого предмета.
waleri вне форума Ответить с цитированием
Старый 19.09.2015, 10:21   #4
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Каждый купленный предмет должен быть отдельным объектом и тогда изменения его свойств не будет затрагивать другие копии этого предмета.
Интересно, как можно было изначально додуматься сделать иначе
Croessmah вне форума Ответить с цитированием
Старый 19.09.2015, 10:22   #5
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Каждый купленный предмет должен быть отдельным объектом и тогда изменения его свойств не будет затрагивать другие копии этого предмета.
Я, вот ничего не понял.Купленный, не купленный. У предмета есть объём. И у рюкзака есть объём. Если объём рюкзака ограничен, в него не засунешь больше, чем он может вместить. Если его объём не ограничен, то там пофиг, чего напихаешь.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 19.09.2015, 10:31   #6
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Я, вот ничего не понял.Купленный, не купленный. У предмета есть объём. И у рюкзака есть объём. Если объём рюкзака ограничен, в него не засунешь больше, чем он может вместить. Если его объём не ограничен, то там пофиг, чего напихаешь.
Да тут, походу у ТС в инвентаре "дескрипторы" предметов, сами предметы лежат где-то в массиве, в единственном экземпляре, то есть если у персонажа два одинаковых предмета, то у них один и тот же дескриптор (например указатель на предмет или индекс в массиве), поэтому, если изменяется один предмет, то у него изменяются и другие такие же. Я так понял
Croessmah вне форума Ответить с цитированием
Старый 19.09.2015, 10:48   #7
Serg-Grin
Дивиджей
Пользователь
 
Аватар для Serg-Grin
 
Регистрация: 05.01.2009
Сообщений: 84
По умолчанию

Croessmah, именно так у меня, а как сделать каждый купленный предмет отдельным объектом?
Впишите в google:
DVJ Serg-Grin
И вы услышите мои песни
Serg-Grin вне форума Ответить с цитированием
Старый 19.09.2015, 10:50   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
Да тут, походу у ТС в инвентаре "дескрипторы" предметов, сами предметы лежат где-то в массиве, в единственном экземпляре, то есть если у персонажа два одинаковых предмета, то у них один и тот же дескриптор (например указатель на предмет или индекс в массиве), поэтому, если изменяется один предмет, то у него изменяются и другие такие же. Я так понял
Так и вот, невозможно определить состояние рюкзака, не зная состояние предмета (предметов). Я ведь уже сказал - в такой постановке, задача не имеет решения. Нет, решение есть, но оно единственное. Бесконечность + бесконечность = бесконечность.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 19.09.2015, 11:17   #9
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Так и вот, невозможно определить состояние рюкзака, не зная состояние предмета (предметов).
А причем здесь рюкзак?
Проблема в том, что ВСЕ "дескрипторы" одинаковых предметов в инвентаре "ссылаются" на один и тот же объект в памяти. Соответственно, если топор в руке сломался, то сломался и топор в рюкзаке. Отсюда вывод - каждый предмет в рюкзаке должен быть отдельной сущностью, возможно, произведенной от некоторого эталона (прототип).
Croessmah вне форума Ответить с цитированием
Старый 19.09.2015, 11:45   #10
Serg-Grin
Дивиджей
Пользователь
 
Аватар для Serg-Grin
 
Регистрация: 05.01.2009
Сообщений: 84
По умолчанию

Croessmah, подскажите а как сделать для каждого одинакового предмета свое состояние?
Впишите в google:
DVJ Serg-Grin
И вы услышите мои песни
Serg-Grin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет числа предметов в расписании уроков Polly_Panika Microsoft Office Access 5 27.03.2014 10:14
Сортировка предметов (Delphi) grongost Помощь студентам 1 07.09.2011 23:57
Разделение предметов по весу niki123 Общие вопросы C/C++ 13 04.04.2011 12:13
Структура данных для хранения предметов L_M Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 15.11.2010 21:08
Задача на С++. формирование выбора предметов Veina Помощь студентам 9 23.12.2009 00:39