Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2007, 02:30   #11
SkyFox
Новичок
Джуниор
 
Регистрация: 10.02.2007
Сообщений: 2
По умолчанию

предлагаю общий алгоритм рисования:

мап(а,б) ; массив карты. а,б - ее размеры, должен возвращать картинку
; гекса или ссылку на нее.
выс ; высота гекса
шир ; ширина гекса
смещ ; смещение столбцов по высоте

начало
м=шир/2
для и от 0 до а
л=нечет(а) ; =1 если а нечетная, иначе 0
Х=целое(и/2)*шир+м*л
для к от 0 до б
У=к*выс+смещ*л
рисовать (Х,У,мап(и,к)
следующий к
следующий и
конец

Последний раз редактировалось SkyFox; 15.04.2007 в 02:33.
SkyFox вне форума Ответить с цитированием
Старый 23.06.2007, 23:30   #12
itisiam
аккаунт недоступен
Форумчанин
 
Регистрация: 23.01.2007
Сообщений: 107
По умолчанию

я конечно понимаю что мне здесь скорее всего никто не поможет, но ввиду того что инфы не нашел, а также принципа " чем черт ни шутит" всетаки спрошу. Собственно вопрос в следующем - я не пойму какой смысл обсуждать как рисовать сетку и прочую чушь ,типа с какими гексами контактирует гекс; на мой взгляд главным является вопрос о том как будет осуществляться взаимодействие с гексом - например OnClick. На мой взгляд непрофессионально будет по координатам клика определять какой гекс был нажат => вероятно стоит сделать его компонентом или чтото типа того что бы с OnClick`ом можно было работать на более разумном уровне. Есть на этом форуме тот кто может чтонибудь посоветовать по этому поводу??
ввел пароль, который мне не известен
itisiam вне форума Ответить с цитированием
Старый 24.06.2007, 12:15   #13
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

"На мой взгляд непрофессионально будет по координатам клика определять какой гекс был нажат => вероятно стоит сделать его компонентом или чтото типа того что бы с OnClick`ом можно было работать на более разумном уровне"

а в чем отличие то ?
хоть прячешь проверку координат в компонент, хоть явно делаешь..

"прочую чушь ,типа с какими гексами контактирует гекс"
один гекс никому не нужен .. имеет смысл массив гексов, и там этот метод - один из основных .
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 24.06.2007, 19:43   #14
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
Лампочка Есть вариант...

Есть способ сверх точный, но может покажется сложновато, но тем не менее...
Вначале задается массив типа Integer. Его ячейки заполняются цифрами 1 и 0 в шахматном порядке, т.е.:
-------------
0 1 0 1 0 1 0
1 0 1 0 1 0 1
0 1 0 1 0 1 0
1 0 1 0 1 0 1
0 1 0 1 0 1 0

-------------
Для визуализации достаточно пробежаться по массиву, и там где "1" выполнить процедуру рисования заготовленной картинки ячейки со смещением к центру. Смещение на карте каждой ячейки по-горизонтали 2:1, а по-вертикали 1:2.
Все перемещение в массиве по "1". По-горизонтали на i+2 (или i-2), по-вертикали 4 варианта:
i-1, j-1;
i+1, j-1;
i-1, j+1;
i+1, j+1.
В качестве текущей ячейки можно использовать любой объект, тот же Image. На основном поле работает процедура "OnClick", ...в ней придется считывать отклонение курсора мыши от текущей ячейки (координаты Image).
Если устраивает, могу подробнее.
Изображения
Тип файла: jpg Соты.JPG (23.2 Кб, 197 просмотров)
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 25.06.2007, 01:04   #15
itisiam
аккаунт недоступен
Форумчанин
 
Регистрация: 23.01.2007
Сообщений: 107
Сообщение

2Beermonza> Мда..., после получаса напряженной работы мозга удалось все понять. А рисовать надо на канве и заводить Имаг только для текущей позиции?? поподробнее не помешает.
Как я понял "К" означает картинка. А пространство между 2мя картинками чем забить?

Цитата:
а в чем отличие то ?
Смысл гексов на мой взгляд заключается в том, что поле для упрощения (и не только) разбито на малые участки. И будет как минимум глупо работать с обычной канвой и потом на ней дорисовывать непойми зачем шестиугольники...

Былобы конечно шикарно компонент сделать, но как подумаешь что у него должно быть не 4 угла а 6 в такую дипрессию впадаю..
ввел пароль, который мне не известен
itisiam вне форума Ответить с цитированием
Старый 26.06.2007, 21:50   #16
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
Счастье пояснения...

Так и есть, рисовать на "канве", но один единственный раз при загрузке карты, далее все поле (объект Image, если хотите) просто будет сдвигаться в соответствии с размерами одной ячейки, ...тут "вольному - воля" центрирование активной позиции или сдвиг карты по достижению одного из концов.
Свободные ячейки массива послужат для сохранения места прибывания других персонажей, предметов, препятствий и пр., нужен лишь унифицированный код записи (смещение i+1 для выборки данных). Массив не обязательно должем быть того типа, что я указал в начале, строковый тип будет даже предпочтительнее.
Активная позиция устанавливается координатами пустого (или с картинкой персонажа) "Имага", он же используется для выполнения действий на свой "OnClick".
itisiam, судя по вашим рассуждениям, вам не нужно объяснять как считывать позицию курсора мыши и выполнять сдвиг "Имага" на новую позицию, ...если не так, то напишу.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его

Последний раз редактировалось Beermonza; 26.06.2007 в 21:59.
Beermonza вне форума Ответить с цитированием
Старый 20.07.2007, 13:24   #17
Феоматар
 
Аватар для Феоматар
 
Регистрация: 21.04.2007
Сообщений: 3
По умолчанию

я делаю стратегию с разрисованной территорией и у меня такой вопрос:как сделать так чтобы щелчёк мыши обрабатывался не по квадратной картинке а по нужным местам в этом квадрате, так чтобы щелчёк на прозрачность не считался щелчком на картинку (как попроще объяснить не знаю)
Феоматар вне форума Ответить с цитированием
Старый 20.07.2007, 13:58   #18
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

if цвет пикселя = например, белый (если отбивка по белому) then exit;
Alar вне форума Ответить с цитированием
Старый 20.07.2007, 15:55   #19
Феоматар
 
Аватар для Феоматар
 
Регистрация: 21.04.2007
Сообщений: 3
По умолчанию

не понял, что значит отбивка?
Феоматар вне форума Ответить с цитированием
Старый 20.07.2007, 15:59   #20
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

прозрачность - это какой цвет? код какой? проверяешь где курсор был при клике, если цвет прозрачности, то ставь выход из обрабочика.
Alar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск