Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2008, 21:17   #11
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,432
По умолчанию

Ну а может быть и надо чтобы в одну клетку можно было две картинки рисовать. К примеру земля, а на ней дерево:

Ground1
50
25
Tree2
50
25

Что тогда? Позиционный код в матрицу и в бинарник - ну это один байт уже всего восемь состояний клетки.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 21.10.2008, 21:49   #12
BangBangFM
Заблокирован
 
Регистрация: 12.08.2008
Сообщений: 166
По умолчанию

Посмотри в тип который я дал. Там объекты, и доп. объекты. Как раз деревья, например.
BangBangFM вне форума Ответить с цитированием
Старый 21.10.2008, 22:14   #13
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,432
По умолчанию

Цитата:
Ну а может быть и надо чтобы в одну клетку можно было две картинки рисовать. К примеру земля, а на ней дерево:

Ground1
50
25
Tree2
50
25

Что тогда? Позиционный код в матрицу и в бинарник - ну это один байт уже всего восемь состояний клетки.
Ну это в большей степени к идее mutabor_a. Ну как то не вписывается в простую матрицу наличие нескольких объектов в клетке.
А насчёт типа ну в принципе - да.
P.S.
Ну а если земля, а на ней дерево, а на нём птичка ?
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 21.10.2008, 22:22   #14
BangBangFM
Заблокирован
 
Регистрация: 12.08.2008
Сообщений: 166
По умолчанию

Птичка объект не статичный и должна летать, а значит к матрице объектов ни как не относится.
BangBangFM вне форума Ответить с цитированием
Старый 22.10.2008, 09:11   #15
Манжосов Денис :)
Участник клуба
 
Регистрация: 29.01.2008
Сообщений: 1,039
По умолчанию

Что касается другого типа построения карты. Есть вопрос.
Как создать бинарный файл? Сохранить под расширением .dat?
А чтобы создать матричную карту(точно не знаю как это называется), у меня пока что знаний не хватает, то что я знал, то и сделал в редакторе, по возможности максимально упростив всё.
Манжосов Денис :) вне форума Ответить с цитированием
Старый 22.10.2008, 10:51   #16
DM_bite
Участник клуба
 
Аватар для DM_bite
 
Регистрация: 29.07.2008
Сообщений: 1,091
По умолчанию

Цитата:
Сообщение от Манжосов Денис :) Посмотреть сообщение
Что касается другого типа построения карты. Есть вопрос.
Как создать бинарный файл? Сохранить под расширением .dat?
А чтобы создать матричную карту(точно не знаю как это называется), у меня пока что знаний не хватает, то что я знал, то и сделал в редакторе, по возможности максимально упростив всё.
TFileStream, а из него вытекает все остальное....
Кто бы ты ни был - не думай о себе слишком (с)
DM_bite вне форума Ответить с цитированием
Старый 22.10.2008, 11:26   #17
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Сообщение от Манжосов Денис :) Посмотреть сообщение
Что касается другого типа построения карты. Есть вопрос.
Как создать бинарный файл? Сохранить под расширением .dat?
А чтобы создать матричную карту(точно не знаю как это называется), у меня пока что знаний не хватает, то что я знал, то и сделал в редакторе, по возможности максимально упростив всё.
Обзаведись Hex редактором и пооткрывай разные файлы, увидишь много интересного. Чтобы самому создавать бинарные файлы как уже сказали читай про TFileStream.
Также почитай про разные форматы файлов, чтобы понять общие принципы создания структуры файлов, чтобы не городить непонятно что. В общем случае файл имеет блок - заголовок и блок с данными, это все условно и отличается в каждом отдельном случае.

Насчет dat, он вроде не имеет какой-то определенной структуры, она на усмотрение разработчика, просто расширение это традиционно используется для хранения информации различными программами (от анлгл. data - данные), можно и другое расширение своим файлам дать, нет разницы. Также файлы на видео CD имеют расширение .dat, и чтобы пользователь не порывался открыть его видеоплеером (к-рые часто берут это расширение под себя) лучше дать другое расширение, хотя ничего страшного не будет и испортить нельзя, просто плеер ошибку выдаст.

Если хочешь дай мне исходники твоего редактора, я переделаю под матрицу и под бинарные файлы.

p.s. Не заметил сразу что дерево может стоять на траве. Тогда просто матрица не подходит, можно слоями сделать, как географические карты делают. Первый слой - земля (земля, трава, вода), второй - объекты (деревья, человек, еще что нибудь), третий слой - птички (могут летать и над землей и над деревьями) и т.д.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 22.10.2008 в 11:53.
mutabor вне форума Ответить с цитированием
Старый 22.10.2008, 12:53   #18
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

To Денис
Хранить данные можно в обычном текстовом файле с расширением .txt. Delphi хорошо приспособлен для этого. Карта у тебя имеет вид двухмерной матрици (считай массив).Создаешь двухмерный массив :
mas : array [0..m,0..n] of byte;
где n – количество клеток карты по вертикали, m – кол-во клеток по горизонтали.
Всем создаваемым видам присваиваешь индексы вида – примерно так :
земля 1 - 1; земля 2 – 2; вода – 3 ; дерево 1 – 4 ; дерево 2 – 5; бот – 6 ; и так далее.
Вводишь процедуру при составлении карты, где при присвоении клетке значения (скажем вода) в
соответствующую переменную массива заносишь значение индекса вида :
mas[4,12]:= 3;
Потом весь этот заполненный массив можно записать в файл следующей процедурой :
Код:
procedure  WriteIndex;
var i,j,s: integer;  // счетчики циклов
    wi: integer;     // переменная  записи  в  файл "индексов
    mas : array [0..10,0..10] of integer;  //  массив  (я для примера взял 10 х 10)
   fi :  text;  //  идентификатор  файла
begin
  AssignFile( fi ,'mem_index.txt');   //  привязываем   указанный файл  ‘mem_index’ к идентификатору
  Rewrite(fi);  //   открываем  файл, если он не существует, то создается пока пустой файл 
    for i:= 0 to 10 do
    begin
      for j:= 0 to 10 do
      begin
        wi:= mas[i,j];  //  перменной  записи в цикле присваиваем очередное значение из массива
        if j = 10 then Writeln(fi,wi,' ')   //  перенос строки , что бы запись в файле была в виде
                                                          //   матрицы, а не  сплошной строки
        else
        Write(fi,wi,' ');   // запись в файл
      end;
    end;
  end;
  CloseFile(fi);  //  в конце процедуры обязательно закрываем  файл.
end;
В результате в папке проекта будет файл mem_index.txt примерно следующего вида :

1 2 1 1 3 6 3 3 5 1
2 2 3 1 1 1 2 2 6 7
……………………………..
10-я строка - 2 2 3 3 4 4 5 1 1 1
И не сомневайся даже ... отдых - кайф, работа - лажа!

Последний раз редактировалось DeKot; 22.10.2008 в 13:24.
DeKot вне форума Ответить с цитированием
Старый 22.10.2008, 13:21   #19
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию продолжение

Для чтения данных из файла следующая процедура :

Код:
procedure ReadIndex;

var i,j,k: integer; // счетчики циклов
ri: integer; // переменная записи в файл "индексов" блоков уровня
mas_read: array [0..10,0..10] of integer;
fi : text;
begin
i:= 0; j:= 0; // требование компилятора об инициализации
AssignFile(fi,'mem_index.txt');
{$I-} // перевод контроля ошибок на программу, вдруг файла нет
Reset(fi); // открываем файл только для чтения
{$I+} // востановление режима автоматич. обработки ошибок
if IOResult = 0 then // проверка ошибки открытия файла.Если файл не существует
// IOResult отлично от нуля и чтения не будет
begin
for k:= 0 to 99 do
begin
Read(fi,ri); // поочередно считываем из файла каждое значение и присваиваем в ri 
if i = 10 then
begin
i:= 0; j:= j+1;
if j = 10 then j:= 0;
end;
mas_read [j,i]:= ri; // заполняем массив
i:= i+1;
end;
CloseFile(fi); // файл закрываем
end
else
begin
Application.MessageBox(PChar(‘Файл не обнаружен.Нажмите OK'),  // Cообщение WinAPI
PChar(' Редактор карт’),                                                   // если нет файла
MB_ICONQUESTION+MB_OK);
end;
end;
P.S C учетом замечания mutabora про слои - такие массивы можно создавать для каждого слоя.
Важно что таким образом возможно сохранять постоянно текущее положение в игре с учетом изменения ситуации на игровом поле.
И не сомневайся даже ... отдых - кайф, работа - лажа!

Последний раз редактировалось DeKot; 22.10.2008 в 13:36.
DeKot вне форума Ответить с цитированием
Старый 22.10.2008, 14:31   #20
BangBangFM
Заблокирован
 
Регистрация: 12.08.2008
Сообщений: 166
По умолчанию

А если с типом удумаешь делать, то :
Вод в файл:

Код:
Write(f, K);
Вывод:


Код:
Read(f, K);
F,K смотри в моем примере...
BangBangFM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Показать в окне "Мой компьютер" Comer_Jus Общие вопросы Delphi 3 27.09.2008 03:28
Помогите с программой на С++ "текстовый редактор с поддержкой нескольких кодировок" alwa Помощь студентам 1 05.06.2008 19:48
Редактор для "Команч 4" Air Свободное общение 0 31.05.2008 13:54
Добавление компонентов в "мой компьютер" Oleg-vp Общие вопросы Delphi 1 20.11.2007 15:40