LOAD-SAVE
LSD - LOAD|SAVE|DELETE
Довольно частый вопрос на форумах. Почему-то многие начинающие считают, что сохранение - это какой-то полумистический процесс, доступный только гуру, и, сводящийся, как минимум, чуть ли не к дампу памяти процесса (стереотип сродни тому, что фидео-файл - это видео, музыкальный - это музыка; т.е. человек не воспринимает, что ВСЁ ЭТО - всего лишь байты и, при определённом раслкаде, один и тот же файл может быть и видео и текстом - зависит от метода обработки). Возможно это связано со зрелищностью программирования игр;думаю, если бы всё сводилось к какой-нибудь школьной задачке типа: сохраните числа, введёные с клавиатуры - вопросов бы поубавилось. Так в чём же дело? Не стоит забывать, что всё в игровом мире описывается структурами данных, т.е., в конечном счёте, числами - можно сказать - Matrix =) Думаю, из вышеприведённых выкладок нетрудно умозаключить следующее: никакие сверх-хитрые приёмы мы юзать не будем, достаточно лишь сохранить параметры (характеристики,обобщённые координаты/силы, etc) в файл. TEST Напишем примитивненькую прогу для теста: Код:
Graphics 800,600,32,2 Вот сейчас задумался над названием типа Sphere2D... Бавает и хуже... :) SAVE Наша цель - запечатлеть всю эту красоту из кружочков для потомков. Создадим специальную функцию. Код:
Function SaveLevel(name$) (например, чтобы легче пропарсить какие-нибудь парметры (дата/имя_игрока/etc),вынести их в имя файла), но в данном примере оно будет тупо повторять имя сохранялки. И иметь расширение TXT (с расширением те же особенности, что и с первой частью имени - может быть любым, зависит от конкретики задачи). Код:
Function SaveLevel(name$) разбираться самолично. Здесь же - очевидно, что нам необходимы координаты сфер. Код:
Function SaveLevel(name$) Зесь мы пойдём по пути минимального расхода дискового пространства. Код:
While Not KeyHit(1) появиться файл 1.txt, содержащий необходимую информацию. LOAD Теперь займёмся загрузкой "уровня". Код:
Function LoadLevel(name$) получают 2ух главных героев,двойное кол-во монстров и т.п. Код:
Function LoadLevel(name$) Код:
Function LoadLevel(name$) порядке. И ещё: чтобы не запутаться в порядке загрузки и передачи загруженного в функции, лучше конструкции типа: Код:
CreateSphere2D(ReadInt(file),ReadInt(file)) Код:
a=ReadInt(file) Немного модифицируем прогу: Код:
Graphics 800,600,32,2 F6=сохранить F7=загрузить |
Спасибо! я думаю многим это понадобится
|
Ответ: LOAD-SAVE
А как сохранить модифицированый Terrain?
|
Ответ: LOAD-SAVE
в BMP удобнее всего в качестве карты высот.
|
Ответ: LOAD-SAVE
Michael, мне в приципе все равно во что сохранять. Я просто че то не могу понять как модифицированый в Блитзе Terrain сохранить. :)
|
Ответ: LOAD-SAVE
Ну как, берешь цикл по x, в нем цикл по y и записываешь высоту каждой точки сетки. Хочешь в трехмерный массив, хочешь в картинку сразу.
В карту высот удобней тем, что можно прямо сразу и загружать из картинки терраин. Если будешь так делать, то сначала найду самую высокую точку терраина и рисуй точки цветом RGB: [255/MaxHeight*TerrainZ(...),--//--,--//--] |
Ответ: LOAD-SAVE
А терраин получается состоит из большого количества точек? Как их по отдельности проверять?
|
Ответ: LOAD-SAVE
помойму это пригоlится, там avel писал:
http://forum.boolean.name/showthread...hlight=terrain |
Ответ: LOAD-SAVE
IGR, Че то я ничего не понял... =)
|
Ответ: LOAD-SAVE
SkySream, эм... что ты непонял ?? как работает код ??
|
Ответ: LOAD-SAVE
SkySream, сначала уясни для себя что такое террайн, как он устроен, и как с него снимать значения, а уже потом задавай вопросы как это сохранить в файл, иначе не разберёшься.
|
Часовой пояс GMT +4, время: 11:51. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot