Вторник, 26 Ноября 2024, 06:03

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Вопрос по логике (ХЕКСАГОН,БД)
KPECTДата: Понедельник, 01 Августа 2011, 08:02 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Всем привет я новичек на форуме, прошу совета в теоретической части.
Как лучше реализовать процесс построения "игрового поля" состоящее их хексогонов и организовать бд для хранения такого игрового поля?



Допустим как рисовать из центра понятно, +1 лева, -1 права и т.д.
А как быть если поле произвольной формы? и как все это добро записать в бд? Ведь нужно однозначно определить что каждый хекс граничит с 6 другими вокруг него.

Кто сталкивался?
Поделитесь пожалуйста - блок схемками, формулами, советами smile
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
Весёлый программист
Сейчас нет на сайте
А я вот так предлагаю smile


Создать двумерный массив - где количество строк равно общему количеству гексов, номер строки - это номер гекса, а столбцы это направления движения. В ячейках массива - номера соседних гексов по направлениям движений. 0- это пусто в том направлении... Так можно создать любое поле. Отрисовывать кстати легко по такому массиву. Берём гекс под номером 1 - цвет - col1, смотрим что в ячейке направления 4 (вниз), там гекс№2 - переходим на вторую строку, там в ячейке направления гекс№3, переходим на третью строку - там ноль, столбец закончен. smile




Сообщение отредактировал Serg1971 - Понедельник, 01 Августа 2011, 10:02
KPECTДата: Понедельник, 01 Августа 2011, 10:11 | Сообщение # 9
почетный гость
Сейчас нет на сайте
GECK, Спасибо! очень наглядно smile А по записи в бд и реализации связей что еще посоветуете? пример Vinchensoo, единственный.

Добавлено (01.08.2011, 10:11)
---------------------------------------------
Serg1971, пока писал уже запостили smile спасибо, отличная реализация.

Serg1971Дата: Понедельник, 01 Августа 2011, 10:15 | Сообщение # 10
Весёлый программист
Сейчас нет на сайте
Quote (KPECT)
Serg1971, пока писал уже запостили спасибо, отличная реализация.

Да не за что! cool


VinchensooДата: Понедельник, 01 Августа 2011, 10:26 | Сообщение # 11
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Quote (KPECT)
пример Vinchensoo, единственный.

А для двумерного массива нужно просто сделать список и все, где хранить- обычный текстовый фаил или бд- уже вам решать


KPECTДата: Понедельник, 01 Августа 2011, 11:03 | Сообщение # 12
почетный гость
Сейчас нет на сайте
Может кто знает кстати, в чем изюминка хексов ? почему так сложилось что множество варгеймов использует именно хексовую сетку для отображения поля брани smile
GECKДата: Понедельник, 01 Августа 2011, 11:53 | Сообщение # 13
заслуженный участник
Сейчас нет на сайте
Изюминка в том, что на гексагональном поле расстояние до любой соседней клетки одинаковое, как уже сказал lvovand smile
Также на поле из квадратов из одной клетки можно пойти только в четыре смежные клетки, а на поле из гексов - в шесть. Можно, конечно, сделать квадратное поле с перемещением по диагонали, но это не самый лучший выход.
Ну еще они как-то круче выглядят smile


Всё гениальное просто. И хреново работает.
KPECTДата: Понедельник, 01 Августа 2011, 12:00 | Сообщение # 14
почетный гость
Сейчас нет на сайте
То что круче это точно biggrin
Хотя с какой стороны повертеть в Master of Orion 2 вон тоже квадраты ) и ничего, игра супер
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг