Дивиджей | Дата: Суббота, 12.09.2015, 19:55 | Сообщение # 1 |
Сержант
Группа: Пользователи
Сообщений: 22
Статус: Offline
| Здравствуйте многоуважаемые программисты. У меня такой вопрос. Есть база предметов в массиве, для каждого прописаны характеристики. Пример:
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 одинаковых предмета, то состояние будет уменьшаться в двоих предметов сразу даже если один из этих предметов будет находится в рюкзаке. Как можно сделать так, чтобы состояние уменьшалось только на том предмете что надет на персонаже, и при снимании его с персонажа оставалось тоже самое состояние. Заранее спасибо)
Сообщение отредактировал Дивиджей - Суббота, 12.09.2015, 19:56 |
|
| |
Armageddets | Дата: Среда, 16.09.2015, 07:42 | Сообщение # 2 |
Лейтенант
Группа: Администраторы
Сообщений: 68
Статус: Offline
| Сделай проверку при проигрыше. Но для этого ты должен проверять только надетые предметы. Для этого нужно или в характеристиках предметов иметь свойство (надет он или нет) или хранить отдельный массив надетых предметов. А чтобы только у одного предмета менялось состояние нужно в цикле когда меняешь состояние только первое встречание премета отмечать - остальные игнорировать. Для этого вводится булевая переменная и при первом встречании предмета ее значение изменяется, а в проверке добавляем условие если значение не изменилось (на такое то истина или ложь) тогда изменяем состояние, в противном случае ничего не делать.
Если я правильно понял, то именно так.
|
|
| |