|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.04.2011, 20:26 | #1 | ||
Пользователь
Регистрация: 14.04.2011
Сообщений: 60
|
Принадлежность точки клетке(изометрия)
имеется поле из клеток 20х20, оно отрисовано на Image, координаты(угла картинки которая является клеткой) хранятся в массиве Field типа AField
Цитата:
Цитата:
Как определить, какой из клеток(нужны индексы массива) принадлежит точка, полученная по щелчку мыши? |
||
16.04.2011, 21:26 | #2 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Вся область - карта в пикселах, состоит она из кусочков с определенными размерами. Мышь возвращает координаты на области, ...само собой напрашивается поделить координаты мыши на размеры одной игровой клетки в пикселах и округлить. Чтобы было все еще более точно и клетка выбиралась по центру, нужно смещение к координатам мыши, равное половине размера клетки, для каждой координаты.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
16.04.2011, 22:09 | #3 |
Пользователь
Регистрация: 14.04.2011
Сообщений: 60
|
я написал
Код:
но проблема в том что у имаджа оси направлены по нормальному, а у моей сетки, совершенно в других направлениях, 1,1, это у меня самая левая клетка получается что он мне по горизонтали и верртикали клетки считает, даже там где их нет( |
16.04.2011, 22:20 | #4 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Спрячь счет клетки в двойное условие, которое пропускает мышь только когда ее координаты находятся внутри области карты (область Image на форме).
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
16.04.2011, 22:31 | #5 |
Пользователь
Регистрация: 14.04.2011
Сообщений: 60
|
ну это то понятно)
я про то что самая левая клетка он показывает [0,0] а самая правая [19,0] хотя должен бы показать [19,19] ведь ряд то последний) я не могу придумать как развернуть систему координат так как она у сетки расположена |
17.04.2011, 00:18 | #6 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Посмотрел исходник, ...имеется в виду совсем изометрия и в координатах тоже. Не знаю на сколько это нужно, но может устроит и такой вариант: http://www.programmersforum.ru/showp...38&postcount=6 ?
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
20.04.2011, 20:50 | #7 |
Пользователь
Регистрация: 14.04.2011
Сообщений: 60
|
добил таки свою систему координат, короче идея в том что ячейка - это 4 прямые, и точка внутри должна быть выше двух и ниже двух других прямых, это возможно только в одной ячейке. вот и проверяем в цикле каждую
если интересно могу код выложить, мало ли надо кому |
20.04.2011, 23:05 | #8 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Проверка всех линий в цикле - нерационально, понятно, что на клик, а если на движение мыши нужно сразу знать в какой клетке карты? ...должна быть формула, я избавил себя и программу от сложных вычислений, задав координаты как для обычного поля в декартовой системе координат, тем более, что номера ячеек никак не используются в моей игре, и без разницы как они нумеруются, персонаж будет топать в указанную клетку. Может и у тебя та же история?
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
21.04.2011, 13:38 | #9 |
Пользователь
Регистрация: 14.04.2011
Сообщений: 60
|
ну я вначале хотел делать стратегию, и вот для того чтоб дом построить мне нужен номер ячейки куда я щелкнул, чтоб знать где рисовать
а зачем может потребоваться номер при движении мыши? |
21.04.2011, 16:02 | #10 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Понятно. Тем более не вижу причин выполнять изометрическую систему координат, ...это было бы нужно в случае логической игры, где по перемещению курсора нужно знать клетку на карте. Еще раз посмотрим рисуночек:
Тут совершенно не важно как нумеруются ячейки, а экран все равно прямоугольный. Выходит, что можно сделать черную область непроходимой, а координаты возвращать как для обычной декартовой системы координат и матрицы карты. И не обязательно заполнять карту в виде ромба, все клетки можно заполнять спрайтами. В любой момент изометрическое изображение может смениться видом сверху, ...все зависит от редактора карт. Такая реализация универсальна и оптимизирована.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Принадлежность точки | Stereo | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 14.12.2010 11:26 |
ПРИНАДЛЕЖНОСТЬ ТОЧКИ | Dar93ina | Помощь студентам | 1 | 03.12.2010 16:41 |
Принадлежность точки к фигуре | SeeJay | Помощь студентам | 9 | 24.12.2009 14:53 |
Принадлежность точки | Forro | Помощь студентам | 4 | 26.05.2008 14:33 |
Принадлежность точки | UnFaithful | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 08.01.2008 06:16 |