Witam, mam taki problem, jak w temacie że nadpisują mi się dane w tablicy rekordów. Pisze sobie grę dla zabawy i ćwiczenia [rozgrywa toczy się poprzez wpisywanie komend]. W grze będzie można zbierać przedmioty które są zapisywane w w plecaku [tablica rekordów]. Problemem jest to, że gdy gracz zbierze przedmiot, to wszystkie pozostałe przedmioty które miał w plecaku zamieniają się w ten który właśnie zebrał.
Dla przykładu:
1. Znajdujesz przedmiot Grabie
(konsola)
Statystyki:
Oranie Pola: 10
Bicie sąsiada: 5
2. Zabieram przedmiot
3. Sprawdzam plecak:
(konsola)
IDX Przedmiotu: 0
Nazwa: Grabie
Oranie Pola: 10
Bicie sąsiada: 5
4. Idę dalej
5. Znajdujesz przedmiot łopata
6. Zabieram przedmiot
7. Sprawdzam plecak:
(konsola)
IDX Przedmiotu: 0
Nazwa: łopata
Oranie Pola: 0
Bicie sąsiada: 0
IDX Przedmiotu: 1
Nazwa: łopata
Oranie Pola: 0
Bicie sąsiada: 0
Kody źródłowe:
TYPE, VAR, itd
CONST
maxitem_bp = 101;
TYPE
bp_record =
record
bp_item_name : string;
bp_item_hp : integer;
bp_item_mp : integer;
bp_item_atk : integer;
bp_item_def : integer;
bp_item_sp : integer;
bp_item_xp : integer;
end;
bpDB = array[0..maxitem_bp - 1] of bp_record; {Tablica z rekordami}
VAR
bp_t : word;
bp_list : bpDB;
- Znalezienie przedmiotu
procedure item_p;
begin
if tab[x, y] = 5 then
begin
random_item_p;
writeln('Znalazles ', item_name, ' !');
writeln('Chcesz go zebrac[zbierz] czy zostawic[zostaw] w spokoju?');
readln(wez);
if wez = 'zbierz' then
begin
dodaj_item_bp_p;
tab[x][y] := 0;
end;
end;
end;
- Dodanie do plecaka
procedure dodaj_item_bp_p;
begin
if (bp_t < maxitem_bp) then
begin
Inc(bp_t);
WriteLn;
wczytaj_item_p(bp_t - t);
end
else
WriteLn('Twoj ekwipunek jest pelny - nie mozesz niesc wiecej.');
end;
- 'wczytaj_item_p'
procedure wczytaj_item_p(I : Word);
begin
if (I < bp_t) then
begin
bp_list[I].bp_item_name := item_list[t2].item_name;
bp_list[I].bp_item_hp := item_list[t2].item_hp;
bp_list[I].bp_item_mp := item_list[t2].item_mp;
bp_list[I].bp_item_atk := item_list[t2].item_atk;
bp_list[I].bp_item_def := item_list[t2].item_def;
bp_list[I].bp_item_sp := item_list[t2].item_sp;
bp_list[I].bp_item_xp := item_list[t2].item_xp;
end;
end;
- Wyświetlenie zawartości plecaka
{WCZEŚNIEJ JEST PĘTLA KTÓRA POWTARZA CZYNNOŚĆ X RAZY}
procedure wypisz_bp_p(I : Word);
begin
if (I < bp_t) then
with bp_list[I] do
begin
Writeln(' ', I, '. ');
Writeln('Nazwa : ', item_name);
Writeln('HP bonus : ', item_hp);
Writeln('MP bonus : ', item_mp);
Writeln('Atk : ', item_atk);
Writeln('Def : ', item_def);
Writeln('SP : ', item_sp);
Writeln('XP bonus : ', item_xp);
WriteLn;
end;
end;
Jakieś pomysły?