вопрос №2
|
|
Lincor | Дата: Понедельник, 25.03.2013, 14.12.32 | Сообщение # 1 |
 Рядовой
Группа: Пользователи
Сообщений: 6
Статус: Offline
| Код procedure save_game; var root,name,fname:string; i:integer; begin root:=getcatalog(get_roots); name:='warpeople'; fname:=root+name+'.sav'; delete_file(fname); file_create(fname); if open_file(fname)=1 then begin write_byte(1); write_byte(x); write_byte(y); write_byte(y2); write_byte(povorot); write_byte(speed_x); write_byte(speed_y); write_byte(life); write_byte(score); write_byte(killed); write_byte(2); write_byte(plr_weapon); write_byte(ammo); for i:=0 to 23 do begin write_byte(3); write_byte(en[i].typ); write_byte(en[i].x); write_byte(en[i].y); write_byte(en[i].weapon); write_byte(en[i].hp); end; flush; end; end;
procedure load_game; var root,name,fname:string; i,t:integer; begin root:=getcatalog(get_roots); name:='warpeople'; fname:=root+name+'.sav'; if file_exists(fname)=1 then if open_file(fname)=1 then begin if t=1 then begin x:=read_byte; y:=read_byte; y2:=read_byte; povorot:=read_byte; speed_x:=read_byte; speed_y:=read_byte; life:=read_byte; score:=read_byte; killed:=read_byte; end; if t=2 then begin plr_weapon:=read_byte; ammo:=read_byte; end; if t=3 then begin for i:=0 to 23 do begin en[i].typ:=read_byte; en[i].x:=read_byte; en[i].y:=read_byte; en[i].weapon:=read_byte; en[i].hp:=read_byte; end; end; end; end;
почему-то при загрузке все загружаемые переменные равны 0
|
|
| |
Wladymyr | Дата: Понедельник, 25.03.2013, 15.47.28 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 15
Статус: Offline
| Они все равны нулю потому что они индивидуальные, тоисть при каждом вызове одной из процедур, они обнуляются Сделайте эти переменные глобальными и удалите их из процедур.
|
|
| |
Lincor | Дата: Понедельник, 25.03.2013, 17.19.23 | Сообщение # 3 |
 Рядовой
Группа: Пользователи
Сообщений: 6
Статус: Offline
| Цитата (Lincor) var root,name,fname:string; i:integer; эти?
|
|
| |
Wladymyr | Дата: Понедельник, 25.03.2013, 17.21.54 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 15
Статус: Offline
| Цитата (Lincor) Цитата (Lincor)var root,name,fname:string; i:integer; эти? Да.
|
|
| |
Lincor | Дата: Среда, 27.03.2013, 13.07.57 | Сообщение # 5 |
 Рядовой
Группа: Пользователи
Сообщений: 6
Статус: Offline
| не помогло
|
|
| |
Wladymyr | Дата: Среда, 27.03.2013, 16.03.06 | Сообщение # 6 |
Генералиссимус
Группа: Администраторы
Сообщений: 15
Статус: Offline
| код должен выгляддеть примерно так.Если это так, то переменные всё-ровно обнуляются? Цитата (код) var root,name,fname:string; i:integer;
procedure save_game; begin root:=getcatalog(get_roots); name:='warpeople'; fname:=root+name+'.sav'; delete_file(fname); file_create(fname); if open_file(fname)=1 then begin write_byte(1); write_byte(x); write_byte(y); write_byte(y2); write_byte(povorot); write_byte(speed_x); write_byte(speed_y); write_byte(life); write_byte(score); write_byte(killed); write_byte(2); write_byte(plr_weapon); write_byte(ammo); for i:=0 to 23 do begin write_byte(3); write_byte(en[i].typ); write_byte(en[i].x); write_byte(en[i].y); write_byte(en[i].weapon); write_byte(en[i].hp); end; flush; end; end;
procedure load_game; begin root:=getcatalog(get_roots); name:='warpeople'; fname:=root+name+'.sav'; if file_exists(fname)=1 then if open_file(fname)=1 then begin if t=1 then begin x:=read_byte; y:=read_byte; y2:=read_byte; povorot:=read_byte; speed_x:=read_byte; speed_y:=read_byte; life:=read_byte; score:=read_byte; killed:=read_byte; end; if t=2 then begin plr_weapon:=read_byte; ammo:=read_byte; end; if t=3 then begin for i:=0 to 23 do begin en[i].typ:=read_byte; en[i].x:=read_byte; en[i].y:=read_byte; en[i].weapon:=read_byte; en[i].hp:=read_byte; end; end; end; end;
|
|
| |
Lincor | Дата: Среда, 27.03.2013, 19.28.42 | Сообщение # 7 |
 Рядовой
Группа: Пользователи
Сообщений: 6
Статус: Offline
| дело было в переменной t: убрал ее, а также запись ее цифр и все прекрасно заработало
|
|
| |
Wladymyr | Дата: Четверг, 28.03.2013, 11.26.38 | Сообщение # 8 |
Генералиссимус
Группа: Администраторы
Сообщений: 15
Статус: Offline
| Цитата (Lincor) дело было в переменной t: убрал ее, а также запись ее цифр и все прекрасно заработало smile Это хорошо но этой переменной я не видел
|
|
| |