Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  135

•  TDictionary Custom Sort  3 317

•  Fast Watermark Sources  3 065

•  3D Designer  4 825

•  Sik Screen Capture  3 320

•  Patch Maker  3 535

•  Айболит (remote control)  3 637

•  ListBox Drag & Drop  2 996

•  Доска для игры Реверси  81 562

•  Графические эффекты  3 927

•  Рисование по маске  3 231

•  Перетаскивание изображений  2 613

•  Canvas Drawing  2 735

•  Рисование Луны  2 561

•  Поворот изображения  2 166

•  Рисование стержней  2 161

•  Paint on Shape  1 564

•  Генератор кроссвордов  2 226

•  Головоломка Paletto  1 764

•  Теорема Монжа об окружностях  2 215

•  Пазл Numbrix  1 682

•  Заборы и коммивояжеры  2 052

•  Игра HIP  1 279

•  Игра Go (Го)  1 225

•  Симулятор лифта  1 471

•  Программа укладки плитки  1 214

•  Генератор лабиринта  1 542

•  Проверка числового ввода  1 352

•  HEX View  1 490

•  Физический маятник  1 355

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Создание Миникарты к Стратегиям



Оформил: XVeL
Автор: Spose

Этот пример взят из нашей игры "В ОСАДЕ", способ хорош - быстрый и качественный.
Немного о переменных и числах:
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 в нужном месте, и если надо то и точки(позиции юнитов на карте) на ней.

Вот в принципе и всё.




Похожие по теме исходники

Создание таблиц в Paradox




Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте