Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

"Сохранёнки" [Delphi, Windows]


Страницы:   1 2

MonoLife ©   (2005-10-31 05:14:00) 

Добрых суток. Сто лет не занимался играми, но появилось немного времени, нашел свою старую игруху 2003 г, захотелось поковыряться. Вопрос возник такого плана, как лучше создавать пользовательские сохраненки в файл? Содержание: юзер, здоровье, патроны и т.д. и т.п. Какой файл должен быть? Кроме ini тока. Поделитесь, кто что знает.


MonoLife   (2005-11-02 06:24:00) [21]

Спасибо, конечно, всем... Всё же, как сохранить массивиз записей типа Recordв файл и как считать его из файла? Ничего не получается :(


Кефир87   (2005-11-01 21:32:00) [22]

Зачем карту то сохранять? Когда можно сохранить только изменения относительно свежезагруженной карты? Т.е. на пример что у того вот персонажа хп 20%, а вон тот рулез был взят 8)


JUS   (2005-11-01 20:22:00) [23]


> Тем более не понятно какого типа Ваша переменная MapFiles

MapFiles:file of word;
А я не говорю что у меня база данных, я говорю что можно ещё сохранять в базу данных, а свой способ сохранения просто привел как вариант.


Fosgen   (2005-11-01 20:13:00) [24]

Это все равно получается типизированный файл. Запись у него будет все-таки фиксированной длины.

 Write(MapFiles,ScrMap[MapFx,MapFy]);

В этой строчке записывается не что-нибудь, а запись размером в одно слово. Так что в данном случае это даже не база данных, а просто нетипизированный файл.

Тем более не понятно какого типа Ваша переменная MapFiles


JUS   (2005-11-01 12:59:00) [25]

Можно сохранять в базу данных ещё, а я вот карту сохраняю в своей игре

ScrMap:array[1..SizeMapX,1..SizeMapY] of word;
...

AssignFile(MapFiles,'Map0.nlr');
Rewrite(MapFiles);
For MapFy:=1 to SizeMapY do
     For MapFx:=1 to SizeMapX do
     Write(MapFiles,ScrMap[MapFx,MapFy]);
CloseFile(MapFiles);
end;


JUS   (2005-11-01 12:56:00) [26]

Можно сщхранять в базу данных ещё, а я вот карту сохраняю в своей игре

ScrMap:array[1..SizeMapX,1..SizeMapY] of word;
...

> AssignFile(MapFiles,'Map0.nlr');
> Rewrite(MapFiles);
> For MapFy:=1 to SizeMapY do
>   For MapFx:=1 to SizeMapX do
>     Write(MapFiles,ScrMap[MapFx,MapFy]);
> CloseFile(MapFiles);
> end;


Fosgen   (2005-11-01 08:01:00) [27]

А какие они могут быть?
Файлы - либо текстовые - см. те же ini.
Либо - типизированные - тогда массивы фиксированной длины.
Либо - нетипизированные - тогда работа с байтовыми блоками, чтение и запись данных из\в память по указателям (организация буферов и т.д.).

Кто-нить знает другие типы файлов? Я - вроде нет. Дельфи - вроде тоже...:)


MonoLife   (2005-11-01 06:13:00) [28]

Какие еще варианты есть?


Fosgen   (2005-10-31 23:18:00) [29]

Мда, сталкивался я с такой ситуевиной - неопределенной длины массив не позволяется в типе, используемом для типизированных файлов. Дельфя говорит - размер записи неопределен. Запись позволяется исключительно фиксированной и определенной на момент компиляции длины. Переменной длины массивы можно писать блоками по N-байт в нетипизированные файлы. Читая их соответственно по указателям.


MonoLife   (2005-10-31 15:29:00) [30]

...нашел статейку АП по файлам (типизированные и не...)... сейчас почитаю...не знаю, пока, в моем случае, наверное, пригодится. Задача - записать типизированный массив в файл... также как п.[1] ? К примеру, (см. п 1) Myplayer array of Tplayer? SetLength  и т.д... Ага..надо найти инфу по записи и чтению типизированных массивов из файла и в файл...


MonoLife   (2005-10-31 15:14:00) [31]

А еще можно записывать подобным образом типизированные массивы в файл[4]
вот! Чуть по-подробнее можно?.
[3] - Как раз, пока я не задумывался над этой проблемой, я так и делал - файл, записанный, по типу [1] для каждого юзвера.


Домовенок   (2005-10-31 13:24:00) [32]

Можно не только разные "диры" создавать, но и просто разные файлы. А еще можно записывать подобным образом типизированные массивы в файл, если хочется сделать все сохранения в одном файле.


Sniper17   (2005-10-31 12:43:00) [33]

хм... создай разные диры с разными сохранёнками.. какие проблемы-то?


MonoLife   (2005-10-31 10:01:00) [34]

м...м-дя...для одного юзвера я так и делал :). А если пользователей много и каждый хочет загрузить свою игру и у каждого есть свои сохраненки?


Antonn   (2005-10-31 06:54:00) [35]

можно типизированый забабахать, типа:


type
Tplayer = record
helth:integer;
Ammo:integer;
Shield:integer;
end;

var M:TMemoryStream; P:Tplayer;
begin
M:=TMemoryStream.create;
try
p.ammo:=4;
M.write(p,sizeof(Tplayer));
m.savetofile('c:\1.txt');
finally
m.free;
end;
end;


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо