Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

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

Код:
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 в 12:15.
Serg-Grin вне форума   Ответить с цитированием
Старый 19.09.2015, 10:25   #2
Smitt&Wesson
Профессионал
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Адрес: г. Киров
Сообщений: 13,907
Репутация: 741

skype: forwardbiznes
По умолчанию

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

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

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

skype: forwardbiznes
По умолчанию

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

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

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

skype: forwardbiznes
По умолчанию

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет числа предметов в расписании уроков 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 22:08
Задача на С++. формирование выбора предметов Veina Помощь студентам 9 23.12.2009 01:39


10:24.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.