Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование iOS/iPhone
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
MargoK
0 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 7
1

Относится ли точка прикосновения к одному из элементов игрового поля?

06.05.2012, 13:38. Просмотров 1272. Ответов 7
Метки нет (Все метки)

Cocos2D, Objectiv-C 2.0
Дело такое: у меня есть игровое поле размером 6х6, начинается с (10,100), заканчивается (310, 400), соответственно каждый элемент размером 50х50 поинтов. Мне нужно определить относится ли точка прикосновения к какому-либо элементу этого поля, если да, то к какому.
Пробовала сделать так:
Объявила и инициализировала 36 переменных типа CGRect (с помощью метода CGRectMake), потом была мысль засунуть их в массив, но если это делать с помощью метода addObject, то это будет массив объектов. Соответственно, как объекты я их извлеку в переменную типа id или value, а как мне извлечь то, что внутри этих объектов? А определяю на принадлежность с помощью метода CGRectContaintsPoint.
Хотя этот способ сам по себе "не профессиональный"... на мой взгляд. Может кто подскажет способ лучше? Как узнать дотронулся пользователь до 2 элемента 3 ряда или до какого либо ещё? По идеи, нужно узнать до какого элемента дотронулся пользователь и "положить" туда спрайт.
Объявлять 36 спрайтов с заданными координатами и поверх них класть спрайты? Похоже этот способ будет лучше...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2012, 13:38
Ответы с готовыми решениями:

Точка прикосновения внутри Списка Vector2
Доброе время суток всем! Имеется список Vector2 и вот как выглядит этот...

Определить, относится ли заданная точка к закрашенной области
Ввести координаты точек. Определить, относится ли точка к закрашенной области.

Даны отрезки [a, b] и [c, d] и точка A с координатой х. Определить, принадлежит ли данная точка одному из этих отрезков, обоим или лежит вне их
Даны отрезки и и точка A с координатой х. Определить, принадлежит ли данная...

Определите к какой четверти относится точка, заданая координатами
9. Определите до какой четверти относиться точка, задана координатами....

Определить, к какой четверти плоскости относится заданная координатами точка
Ввести значения координат х,у и точки плоскости и определить к какой четверти...

7
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
06.05.2012, 15:56 2
Стоп, зачем Вам вообще CGRect? Используйте CCSprite(конечно же с указанием их rect) и CCArray для их хранения.
После "отлова" нажатия в
Objective-C
1
-ccTouchesBegan:withEvent:
Вы должны преобразовать координату
Objective-C
1
convertCoordinate:
в CCDirector'e,а затем пробежаться по всем CCSprite в Вашем CCArray и сделать
Objective-C
1
CGRectContainsPoint()
для каждого спрайта и вашей точки.

PS. Немного непонял про
По идеи, нужно узнать до какого элемента дотронулся пользователь и "положить" туда спрайт
1
MargoK
0 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 7
07.05.2012, 18:30  [ТС] 3
Цитата Сообщение от zulkis Посмотреть сообщение
По идеи, нужно узнать до какого элемента дотронулся пользователь и "положить" туда спрайт
Ну... как бы это сказать... Должно выглядеть так: появляется шарик (красного, синего, жёлтого или т.п. цвета) и его игрок должен положить на поле 6х6 (соответственно шарик должен двигаться за пальцем) и, когда в ряд выстроятся 3 шарика одного цвета, они должны исчезнуть. Получается спрайт на спрайте, там вроде с параметром z можно похимичить. Но у меня всё равно не очень в голове укладывается... с программной точки зрения.
0
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
07.05.2012, 19:30 4
Как придумаете, так и будет - это насчет реализации с программной точки зрения.
А насчет реализации - ну при тыки - определите, что вы тыкнули на фигуру, которую нужно двигать, а затем в ccTouchesMoved двигаете этот спрайт за пальцем.
0
MargoK
0 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 7
11.05.2012, 18:26  [ТС] 5
Собственно, из той же оперы.
__________________
|30|31|32|33|34|35|
|24|25|26|27|28|29|
|18|19|20|21|22|23|
|12|13|14|15|16|17|
|06|07|08|09|10|11|
|00|01|02|03|04|05|
_____________________
|area_1|area_2|area_3|

Мне нужно из area_3 взять спрайт и положить в одну из ячеек поля 00-35. Это у меня получилось. Так можно N спрайтов положить на одну ячейку поля - меня это не устраивает. Мне нужно чтобы только 1 спрайт можно было положить на одну ячейку. Нужно сделать проверку. Вот с этим затруднения.
Как вариант, думала создать массив, который будет хранить спрайты, которые "положили" на ячейки, чтобы индекс спрайта совпадал с индексом ячейки на которой он лежит. И сверять. Но что-то я не могу найти способ засунуть спрайт по индексу. Получить могу: [array objectAtIndex: i], а засунуть по индексу? Что-то вроде такого: [array oddObject: movedSprite atIndex: i] работать не будет. С dictionary то же самое. В общем, возможно логика храмает и можно сделать по-другому (как?) или я чего-то не могу найти.
В последствии мне нужно будет сверять, допустим, находится ли в 14,15 и 21 ячейки спрайты одного цвета, если да, то удалить их. Поэтому рассматривала массивы.
0
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
11.05.2012, 18:56 6
Совсем простой вариант - массив состояний "занятости" ячеек:
C
1
BOOL *pData = (BOOL*) calloc (36/*Required number*/,sizeof(BOOL));
затем для нужного элемента, который поставлен на нужное место с индексом index:
C
1
pData[index] = TRUE;
Дальше проверка - дело техники.
Ну и не забудьте в конце:
C
1
free(pData);
PS. Можете конечно CCSprite в NSDictionary сетить по ключу номера ячейки. Каждому свое
1
MargoK
0 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 7
11.05.2012, 20:28  [ТС] 7
zulkis,
Спасибо, это мне помогло. А как же это:
Цитата Сообщение от MargoK Посмотреть сообщение
В последствии мне нужно будет сверять, допустим, находится ли в 14,15 и 21 ячейки спрайты одного цвета, если да, то удалить их. Поэтому рассматривала массивы.
У меня спрайты генерятся рандомным цветом радуги и мне нужно определить находятся ли рядом 3 спрайта одного цвета (там картинки цветные).
0
pasha_ost
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 3
07.03.2013, 04:12 8
нужен толковый программер пишущий на objectiv-c из минска!! если есть такой свяжитесь по контакту Остапченко Паша или по тел 8-044-5884110
0
07.03.2013, 04:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2013, 04:12

Генерирование игрового поля
Здравствуйте, друзья! Я пишу программу, в которой нужно генерировать игровое...

Создание игрового поля
Подскажите, пожалуйста, ответ на такой вопрос: Я часто видел, что в...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru