Нужна помощь в работе с массивами:
Имеем:
1. Игра типа Blocks (уничтожать несколько блоков кликом, если рядом находятся несколько блоков одного цвета.)
2. Редактор уровней для игры.
Задача:
Создавать в редакторе и переносить в игру уровни.
[spoiler='Редактор уровней']
... var Form1: TForm1; ... Mass: array of array of Byte; // Динамический массив хранящий состояние игрового поля. MassFile: file of Byte; ... procedure TForm1.N1Click(Sender: TObject); // Процедура сохранения массива в файл var i, j: Integer; begin SaveDialog1.Execute; AssignFile(MassFile,SaveDialog1.FileName); //Reset(MassFile); Rewrite(MassFile); for i:=Low(Mass) to High(Mass) do for j:=Low(Mass) to High(Mass) do begin Write(MassFile,Mass[i,j]); end; CloseFile(MassFile); end; ... procedure TForm1.N2Click(Sender: TObject); // Процедура чтения массива из файла. var i,j: Integer; begin OpenDialog1.Execute; AssignFile(MassFile,OpenDialog1.FileName); // Rewrite(MassFile); Reset(MassFile); for i:=Low(Mass) to High(Mass) do if not Eof(MassFile)then begin for j:=Low(Mass) to High(Mass) do begin Read(MassFile,Mass[i,j]); end; end; CloseFile(MassFile); end; ... end.[/spoiler]
Массив 'Mass' двухмерный динамический, тип данных 'Byte', поле игры может быть разных размеров (11x11, 13x13, 15x15, 17x17 клеток). Очень хочется понять правильно ли я делаю запись\чтение массива файл в целом. А так же объясните пожалуйста как указать при сохранении или при чтении файла размерность сохранённого массива, чтобы когда открывался файл сохранения, в самой игре переназначать размерность согласно тому массиву что читается из файла. Т.е если в редакторе созданно поле 11x11 то в самой игре, при чтении этого файла. сформировать массив нужной размерности и прочитать в него данные.