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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2008, 22:34   #1
L_M
Форумчанин Подтвердите свой е-майл
 
Регистрация: 25.02.2008
Сообщений: 289
По умолчанию Карты для игр

Подскажите пожалуйста как хранить карты для игр. Ну я делаю простенькую игру: карта размером с экран и двирать не надо, рисование по канве формы. Не знаю как обрабатывать карту и хранить при использовании. Например перемещение выглядит так:
if a[i+1,j]=0 then переход из a[i,j] в a[i+1,j]
но при таком движении смещение получается слишком малениким и почти незаметно.(для большого массива напр. 1024х768), а если делать массив меньше, смещение получается слишком большим и возникает необходимость делить объекты. Как ставить в соответствие циферки массива(я буду загружать карту в массив) реальным объектам-картинкам и их св-м(проходимость, разрушаемость, вес).
Есть другая идея - карта хранит массив объектов. Но тогда проблема двигаться между ними: проверять все на столкновение будет слишком долго.
Упс...
L_M вне форума Ответить с цитированием
Старый 14.05.2008, 23:28   #2
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

1.Если так, то сохраняй в таком формате:
[тип обьекта]*[координата1]%[координата2]&[уголо поворота]
(последнее,если юзаешь DelphiX);
Напимер такой код:

ящик*100%55&45
яма*125%55&0
......................
геймер*44%23&0

И так далее. получается так сказать, векторный формат

Есть проблемы, как распознать числа???
2. Пробуй карту одим рисунком. И проверяй через точки.
3. Массив с возможный смещением. То есть:

124524323*25%34&244
2243535353253454
3252*53%24&34543

В этом случае просто сканишь, если просто циферка, то просто, а если следуюший знак - * то делать смещение по x до знака % и по Y до & и после этого знака продолжаешь сканить.
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг

Последний раз редактировалось Dj_smart; 14.05.2008 в 23:33.
Dj_smart вне форума Ответить с цитированием
Старый 16.05.2008, 15:07   #3
VTR
Форумчанин
 
Аватар для VTR
 
Регистрация: 25.04.2007
Сообщений: 105
По умолчанию

я храню их в файле типа интеджер. можеш посмотреть на моей страничке там есть исходники моих игр.

procedure TForm1.N5Click(Sender: TObject);
var
f: File of Integer; // файл
fName: String[80]; // имя файла
x,i,j: integer;
begin
fName :='D:\Robotu\Delphi\my_game_TXT\map a45.map';
AssignFile(f, fName);
Rewrite(f); // открыть для перезаписи

// запись в файл
for j:=0 to 499 do // строки нумеруются с нуля
for i:=0 to 499 do // строки нумеруются с нуля
begin
write(f, mas[i,j]);
end;

CloseFile(f); // закрыть файл
// MessageDlg('Дані збережено в файл ',mtInformation,[mbOk],0);
end;



procedure TForm1.N4Click(Sender: TObject);
var
f: file of Integer; // файл записей
rec: integer; // запись, прочитанная из файла
i,j: integer; // кол-во записей удовлетворяющих запросу
st: string[80];

begin
opendialog1.Execute;
AssignFile(f,opendialog1.FileName);
{$I-}
Reset(f); // открыть файл для чтения
{$I-}
if IOResult <> 0 then
begin
ShowMessage('Ошибка открытия файла БД.');
Exit;
end;

// обработка БД

DXDraw1.Surface.Fill(clBlack);
while not EOF(f) do
begin
for j:=0 to 499 do // строки нумеруются с нуля
for i:=0 to 499 do // строки нумеруются с нуля
begin
read(f,rec); // прочитать запись
mas[i,j]:=rec;
//if (mas[i,j]<>0) or (mas[i,j]<>1) then
DXImageList1.Items.Find('1').Draw(D XDraw1.Surface,i*8-8,j*12-12,mas[i,j]);
end;
//memo1.Text:=memo1.Text+inttostr(rec );
end;
CloseFile(f);
//if n = 0 then
dxdraw1.Flip;
// ShowMessage('Дані завантажені успішно.');
end;
]
VTR вне форума Ответить с цитированием
Старый 16.05.2008, 15:08   #4
VTR
Форумчанин
 
Аватар для VTR
 
Регистрация: 25.04.2007
Сообщений: 105
По умолчанию

ето на ДелфиХ. хотя конструкция универсальная. коменты не везьде правельны.
]
VTR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание карты города Коржик Общие вопросы Delphi 8 13.08.2009 04:54
Карты Google Earth TaluAs Свободное общение 10 17.05.2008 14:06
карты изображений )Игнат( HTML и CSS 1 07.02.2008 19:17
Чисто задачи (про карты) Simply-Art Общие вопросы Delphi 2 29.01.2007 13:50