Вопрос по логике (ХЕКСАГОН,БД)
|
|
KPECT | Дата: Понедельник, 01 Августа 2011, 08:02 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Всем привет я новичек на форуме, прошу совета в теоретической части. Как лучше реализовать процесс построения "игрового поля" состоящее их хексогонов и организовать бд для хранения такого игрового поля?
Допустим как рисовать из центра понятно, +1 лева, -1 права и т.д. А как быть если поле произвольной формы? и как все это добро записать в бд? Ведь нужно однозначно определить что каждый хекс граничит с 6 другими вокруг него.
Кто сталкивался? Поделитесь пожалуйста - блок схемками, формулами, советами
|
|
| |
lvovand | Дата: Понедельник, 01 Августа 2011, 08:48 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| в бд хранится координаты клетки и свойства, из центра отрисовывать странная мысль, удобнее отрисовывать по строкам или столбцам верхняя строка [0,0],[0,1][0,2] и т.д. следующая строка [1,0],[1,1],[1,2] ну и так далее координаты клетки переводишь в координаты на экране и отрисовываешь.
Разработка и продвижение сайтов. Дизайн
|
|
| |
KPECT | Дата: Понедельник, 01 Августа 2011, 09:14 | Сообщение # 3 |
почетный гость
Сейчас нет на сайте
| Это если бы у меня квадраты были то да ) а тут хексЫ
в первом варианте с одной ячейкой граничит 6 других ячеек, во втором 8
Табличная форма представления уже немножко сбивается
|
|
| |
lvovand | Дата: Понедельник, 01 Августа 2011, 09:26 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| у клеток координаты все равно 0,0 0,1 и т.п. независимо от того, гексы или прямоугольники основная разница в гексах, то что расстояние от центра клетки до центров окружающих ее клеток одинаково не думал кстати гексы на 90 градусов повернуть, вроде поудобнее будет
Разработка и продвижение сайтов. Дизайн
Сообщение отредактировал lvovand - Понедельник, 01 Августа 2011, 09:29 |
|
| |
x-and1988 | Дата: Понедельник, 01 Августа 2011, 09:29 | Сообщение # 5 |
постоянный участник
Сейчас нет на сайте
| а если как у тебя, по строкам: 0:0 0:1 0:2 0:3 - color1 1:0 1:1 1:2 1:3 - color2 2:0 2:1 2:2 2:3 - color3
Изучаю Java My new project My old project
|
|
| |
Vinchensoo | Дата: Понедельник, 01 Августа 2011, 09:35 | Сообщение # 6 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Можно хранить указатель на все ячейки, граничащие с данной. Т.е. если указатель не пуст-> берем и отрисовываем соседную клетку с ее свойствами, потом смотрим ее соседей. Если соседи есть- отрисовываем, если нет- возвращаемся к исходной и смотрим уже следующего соседа.
Будет рекурсивный алгоритм, рисование- математика чистой воды(даже геометрия с рассчетом координат).
Но так БД будет весить больше, не просто координаты будут, а указатели(6 штук + свойства самой клетки)
|
|
| |
GECK | Дата: Понедельник, 01 Августа 2011, 09:38 | Сообщение # 7 |
заслуженный участник
Сейчас нет на сайте
| Quote (KPECT) в первом варианте с одной ячейкой граничит 6 других ячеек, во втором 8 А в чем проблема с граничными клетками? При переводе гексов в прямоугольники получится такая фигня: Просто учитываешь четность ряда, и все.
ADD: а отрисовывать можно так же, как поле из прямоугольников, только нечетные ряды сдвигать на полтайла.
Всё гениальное просто. И хреново работает.
Сообщение отредактировал GECK - Понедельник, 01 Августа 2011, 09:41 |
|
| |
Serg1971 | Дата: Понедельник, 01 Августа 2011, 09:49 | Сообщение # 8 |
Весёлый программист
Сейчас нет на сайте
| А я вот так предлагаю Создать двумерный массив - где количество строк равно общему количеству гексов, номер строки - это номер гекса, а столбцы это направления движения. В ячейках массива - номера соседних гексов по направлениям движений. 0- это пусто в том направлении... Так можно создать любое поле. Отрисовывать кстати легко по такому массиву. Берём гекс под номером 1 - цвет - col1, смотрим что в ячейке направления 4 (вниз), там гекс№2 - переходим на вторую строку, там в ячейке направления гекс№3, переходим на третью строку - там ноль, столбец закончен.
Сообщение отредактировал Serg1971 - Понедельник, 01 Августа 2011, 10:02 |
|
| |
KPECT | Дата: Понедельник, 01 Августа 2011, 10:11 | Сообщение # 9 |
почетный гость
Сейчас нет на сайте
| GECK, Спасибо! очень наглядно А по записи в бд и реализации связей что еще посоветуете? пример Vinchensoo, единственный. Добавлено (01.08.2011, 10:11) --------------------------------------------- Serg1971, пока писал уже запостили спасибо, отличная реализация.
|
|
| |
Serg1971 | Дата: Понедельник, 01 Августа 2011, 10:15 | Сообщение # 10 |
Весёлый программист
Сейчас нет на сайте
| Quote (KPECT) Serg1971, пока писал уже запостили спасибо, отличная реализация. Да не за что!
|
|
| |
Vinchensoo | Дата: Понедельник, 01 Августа 2011, 10:26 | Сообщение # 11 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| Quote (KPECT) пример Vinchensoo, единственный. А для двумерного массива нужно просто сделать список и все, где хранить- обычный текстовый фаил или бд- уже вам решать
|
|
| |
KPECT | Дата: Понедельник, 01 Августа 2011, 11:03 | Сообщение # 12 |
почетный гость
Сейчас нет на сайте
| Может кто знает кстати, в чем изюминка хексов ? почему так сложилось что множество варгеймов использует именно хексовую сетку для отображения поля брани
|
|
| |
GECK | Дата: Понедельник, 01 Августа 2011, 11:53 | Сообщение # 13 |
заслуженный участник
Сейчас нет на сайте
| Изюминка в том, что на гексагональном поле расстояние до любой соседней клетки одинаковое, как уже сказал lvovand Также на поле из квадратов из одной клетки можно пойти только в четыре смежные клетки, а на поле из гексов - в шесть. Можно, конечно, сделать квадратное поле с перемещением по диагонали, но это не самый лучший выход. Ну еще они как-то круче выглядят
Всё гениальное просто. И хреново работает.
|
|
| |
KPECT | Дата: Понедельник, 01 Августа 2011, 12:00 | Сообщение # 14 |
почетный гость
Сейчас нет на сайте
| То что круче это точно Хотя с какой стороны повертеть в Master of Orion 2 вон тоже квадраты ) и ничего, игра супер
|
|
| |