Создание Миникарты к СтратегиямDelphi , Графика и Игры , Создание игрСоздание Миникарты к Стратегиям
Оформил: XVeL Немного о переменных и числах: 150 - это размер миникарты в пикселах (у нас 150 на 150) rx и ry - ширина и высота карты (у нас обычно 80 на 80) Перейдем непосредственно к описанию: procedure CreatemMap; var i,j: Integer; NG: TDIB; //Это картинка в которую мы будем сохранять миникарту Item: TPictureCollectionItem; //Тут будет хранится картинка в TdxImageList'е tm:Tdirectdrawsurface; //Поверхность DxDraw tm2:Tdirectdrawsurface; //Тоже begin ng:=tdib.Create; //Создаем компонент tm:=Tdirectdrawsurface.Create(myform.DXDraw.Surface.DDraw); //Создаем поверхность tm.SystemMemory:=false; //Это надо tm.SetSize((150 div rx +1)*rx ,(150 div ry +1)*ry); //Устанавливаем размеры пропорциональные размерам карты tm.Fill(0); //Заоиваем поверхность черным цветом tm2:=Tdirectdrawsurface.Create(myform.DXDraw.Surface.DDraw); //Создаем вторую поверхность tm2.SystemMemory:=false; //Надо tm2.SetSize(150,150); //Устанавливаем сжатые размеры (Настоящий размер миникарты) tm2.Fill(0); //Тоже заливаем черным for i:=0 to rx-1 do //Далее отрисовываем всю карту for j:=0 to ry-1 do //по частям в уменьшеном виде на первую поверхность myform.il.Items.Find('west0').StretchDraw(tm,bounds((150 div rx+1)*i,(150 div ry+1)*j,150 div rx+1,150 div ry+1),map[i,j]); //map - двухмерный массив содержащий номер картинки tm.AssignTo(ng); //Сохраняем содержание поверхности в картинку tm.Free; //Поверхность теперь нам не нужна и мы её удаляем Item := TPictureCollectionItem.Create(MyForm.IL.Items); //Добавляем картинку в TDxImageList Item.Name:='MMG'; //Её имя Item.SystemMemory:=false; //Надо Item.Picture.Graphic := ng; //Загружаем картинку в список item.Transparent:=false; //Непрозрачна Item.Restore; //Принимаем изменения myform.il.Items.Find('mmg').StretchDraw(tm2,bounds(0,0,150,150),0); //Теперь рисуем(заодно и сжимаем) картинку в заданных размерах миникарты на вторую поверхность! tm2.AssignTo(ng); //Опять сохраняем получившийся результат tm2.Free; //Избавляемся от уже ненужной второй поверхности Item.Name:='MMG'; //Исправляем то что нужно в TdxImageList'е Item.SystemMemory:=false; //Исправляем то что нужно в TdxImageList'е Item.Picture.Graphic := ng; //Исправляем то что нужно в TdxImageList'е item.Transparent:=false; //Исправляем то что нужно в TdxImageList'е Item.Restore; //Принимаем изменения end;Теперь во время игры просто отрисовываем картинку под именем MMG в нужном месте, и если надо то и точки(позиции юнитов на карте) на ней. Вот в принципе и всё. Создание Миникарты к Стратегиям - это пример программного кода, который позволяет создавать мини-карту для стратегических игр с помощью языка программирования Pascal. Комментарии и вопросыМатериалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Создание игр ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |