Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];

Вниз

Гексагональная сетка   Найти похожие ветки 

 
TButton ©   (2004-12-02 15:37) [0]

Та что была в Героях Меча и Магии, та что была в Фалауте1(2). та самая сетка (карта) состоящая из 6ти угольных сот.
есть мысли как ее можно реализовать?
у меня, например нет...
а надо...
а нет...
конкретно. требо, чтоб карта в игре состояла не из четырех угольных а из шестиугольных клеток.


 
TButton ©   (2004-12-02 19:15) [1]

возникла мысль.
TCell = record
 x, y: integer; // эккранные координаты
 neig: array[1..6] of PCell; // соседние клетки
 ...
end;

PCell = ^TCell

TMap = array of TCell


еще предложения будут?


 
cyborg ©   (2004-12-02 20:11) [2]

Нарисовал я на бумажке, получается, что вывод так же построчно двумерный массив, только расстояние по горизонтали между следубющей горизонтальной клетки будет в половину ячейки. Сам нарисуй на бумажке шестигранники и проведи через них горизонтальные линии, а дальше определи смещения в какие ячейки из текущей клетки можно перемещаться.


 
Darthman ©   (2004-12-02 21:46) [3]

В фаллауте рисуются прямоугольные тайлы. А вот клеточки сделаны хексами. Так удобнее.


 
Mihey_temporary ©   (2004-12-02 21:51) [4]

Есть куча статей, если тут не ответят - поищи.


 
TButton ©   (2004-12-02 22:22) [5]


> Нарисовал я на бумажке, получается, что вывод так же построчно
> двумерный массив, только расстояние по горизонтали между
> следубющей горизонтальной клетки будет в половину ячейки.
> Сам нарисуй на бумажке шестигранники и проведи через них
> горизонтальные линии, а дальше определи смещения в какие
> ячейки из текущей клетки можно перемещаться.

вот это я нартсовал и опредилил, а потом еще и пост сюда кинул набр ту. а вот хранение клеток это вопрос то-ли линейный массив, то-ли двухмерный. надо по думать.

> В фаллауте рисуются прямоугольные тайлы. А вот клеточки
> сделаны хексами. Так удобнее.

ну, скажем, тайлы они всяко-разно будут двухмерные, недвухмерных битмапов пока не придумали.

> Есть куча статей, если тут не ответят - поищи.

да я думаю найдем решение.


 
TButton ©   (2004-12-02 23:00) [6]


> Сам нарисуй на бумажке шестигранники и проведи через них
> горизонтальные линии, а дальше определи смещения в какие
> ячейки из текущей клетки можно перемещаться.

а определил я всю ету фигню так.
{нумерация X, Y и клеток начинается с единицы}
n:=(cell.Y-1)*map.Width+X;
cell.neigh[1]:=n-map.Width;
cell.neigh[2]:=n-map.Width+1;
cell.neigh[3]:=n+1;
cell.neigh[4]:=n+map.Width+1;
cell.neigh[5]:=n+map.Width;
cell.neigh[6]:=n-1;

к этому бы еще картинку приложидь. в коде идет обсчет номеров соседних клеток для сетки в которой шестигранники расположены так, что прямая проходящая через две вершины параллельна оси OY (т.е. вертикальна).


 
П7   (2004-12-03 07:24) [7]

могу прислать пример рисования гексогональной сетки. Отправь письмо с темой топика на reijii@animka.com.
А в Фоллауте было заранее известное количество гексов по вертикали и горизонтали и соседние вычислялись на основе этих размеров. Но, как правильно заметили, тайлы там изометрические, только угол "поворота камеры" не стандартный...



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.049 c
14-1107856563
Vaitek
2005-02-08 12:56
2005.02.27
NTFS сжатые файлы/папки


3-1106637936
igor_w
2005-01-25 10:25
2005.02.27
Как реализовать PageControl с БД


3-1106800214
UVV
2005-01-27 07:30
2005.02.27
Запрос с параметром timestamp


3-1106630033
Lucifer
2005-01-25 08:13
2005.02.27
Отображение поля Time в DBEdit при использовании базы данных MS A


14-1107948735
esu
2005-02-09 14:32
2005.02.27
Вот такая задачка по программированию, есть ли решение ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский