Перейти к основному содержимому

14.5. Как заменить один предмет на другой?

В: Как заменить один предмет на другой?

О: Чтобы заменить один предмет на другой, нужно удалить старый предмет, а в позицию, которую он занимал, вписать новый предмет.

Если вы знаете позицию предмета, который собираетесь удалить, то код довольно простой:

! светящийся шар был помещён в третью позицию


! удаляем светящийся шар

delobj "Светящийся шар"
! добавляем "Тёмный шар" в третью позицию
addobj "Тёмный шар","",3

Если вы не знаете заранее, в какой позиции окажется тот или иной предмет, придётся написать алгоритм, который будет находить позицию нужного предмета перед удалением:

!ищем позицию предмета по имени 

loop local i=1 while no i > countobj step i+=1 :
if $getobj(i)="Светящийся шар":
objnumber = i
jump 'end_cycle'
end
end

:end_cycle

! удаляем предмет по индексу

killobj objnumber
! вставляем на его место новый предмет

addobj "Тёмный шар","",objnumber

Функция countobj возвращает число предметов в инвентаре. Функция $getobj возвращает название предмета по его номеру.

То есть, данный алгоритм сравнивает названия всех предметов в инвентаре по очереди, и если встречает такое же название, как мы указали, записывает номер в переменную objnumber.