-1 голос
 
874 просмотра
15.08.2021 / 22:16  GOAR

Инвентарь (МР)

Всем привет)

Крч, накодил новую систему инвентаря для своей игры.

Все работает , но есть одно но.. Которое сломало мне мозг. Может кто-то увидит мою ошибку ?

код:

type Tinv=record
id,typ,sum: integer;
end;

var

inv: array [1..7,1..7] of Tinv;
a,b: integer;

procedure ResourcesToInv(typ,id:integer);
var toInv: boolean;
begin

// если можно ещё добавить в инв.
toInv:=true;

for a:=1 to 7 do
for b:=1 to 7 do

if toInv then
begin

if (inv[a,b].typ=t) and (inv[a,b].id=id) and (inv[a.b].sum>0) then
  begin
  inv[a,b].sum:=inv[a,b].sum+1;
  toInv:=false; // запрещаем добавлять
  end;

// после того как у нас уже есть 1 или более предмет в инв. прибавляем +1 ; но у меня какого-то чуда выходит (3 или более)!
почему????!!!(

else if (inv[a,b].typ=0) and (inv[a,b].id=0) and (inv[a,b].sum=0) then
begin
inv[a,b].typ:=typ;
inv[a,b].id:=id;
inv[a,b].sum:=inv[a,b].sum+1;
toInv:=false; // запрещаем добавлять
end;

// тут если в инв. нет такого придмета , добавляем и прибавляем +1, тут проблем нет.

// typ=1 это инструменты;
// typ=2 это еда, прочее;
// id это номер вещей;

но почему 3???((

end;
exit;
end;

дай вам Бог разобраться :)
Изм. GOAR от 15.08.2021 / 22:18
15.08.2021 / 22:36  aNNiMON
Оформи вопрос как следует, плиз. Название вопроса "Инвентарь (МР)" вообще ни о чём не говорит. И тег [code][/code] для кода.
15.08.2021 / 23:50  GOAR
annimon, извините, учту.
           но можете помочь с этим?
16.08.2021 / 07:44  Витаминыч
Я думаю ошибка в изначальном подходе
16.08.2021 / 08:20  GOAR
Витаминыч, почему?
17.08.2021 / 07:05  Витаминыч
Мы же вроде уже общались на тему инвентаря и его организации. Все равно сделал иначе 😏
Ответы
 
1 голос
 
# 16.08.2021 / 18:43  vlavolk
  1. if (inv[a,b].typ=typ) and (inv[a,b].id=id) and (inv[a.b].sum>0) and toInv then
  2.   begin
  3.   inv[a,b].sum:=inv[a,b].sum+1;
  4.   toInv:=false; // запрещаем добавлять
  5.   end;
  6. else if (inv[a,b].typ=0) and (inv[a,b].id=0) and (inv[a,b].sum=0) and toInv then
  7. begin
  8. inv[a,b].typ:=typ;
  9. inv[a,b].id:=id;
  10. inv[a,b].sum:=inv[a,b].sum+1;
  11. toInv:=false; // запрещаем добавлять
  12. end;

в условиях нужно было еще проверять переменную toInv
а в пере циклом убрать блок if toInv, потом что ранее toInv нигде не изменяется
Изм. vlavolk от 16.08.2021 / 18:46
 
1 голос
 
# 15.08.2021 / 23:02  vlavolk
  1. if (inv[a,b].typ=t)
а что это за переменная t?
15.08.2021 / 23:16  GOAR
тип клетки.
если тип клетки инвентаря равен 1 то, это инструмент ; если 2 то прочее
 
-1 голос
 
# 16.08.2021 / 10:34  GOAR
Как быть то
Всего: 3

Реклама

Мы в соцсетях

tw tg yt gt