Форум программистов, компьютерный форум CyberForum.ru

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
MargoK
0 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 7
#1

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

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

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

Почему в категории нельзя добавлять поля instance method? Objective-C
Программно изменить положение кнопки/поля/бара
C# Точка прикосновения внутри Списка Vector2
Swift Точка вместо запятой в Decimal Pad
Определить, относится ли заданная точка к закрашенной области Lazarus

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 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. Немного непонял про
По идеи, нужно узнать до какого элемента дотронулся пользователь и "положить" туда спрайт
MargoK
0 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 7
07.05.2012, 18:30  [ТС]     Относится ли точка прикосновения к одному из элементов игрового поля? #3
Цитата Сообщение от zulkis Посмотреть сообщение
По идеи, нужно узнать до какого элемента дотронулся пользователь и "положить" туда спрайт
Ну... как бы это сказать... Должно выглядеть так: появляется шарик (красного, синего, жёлтого или т.п. цвета) и его игрок должен положить на поле 6х6 (соответственно шарик должен двигаться за пальцем) и, когда в ряд выстроятся 3 шарика одного цвета, они должны исчезнуть. Получается спрайт на спрайте, там вроде с параметром z можно похимичить. Но у меня всё равно не очень в голове укладывается... с программной точки зрения.
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
07.05.2012, 19:30     Относится ли точка прикосновения к одному из элементов игрового поля? #4
Как придумаете, так и будет - это насчет реализации с программной точки зрения.
А насчет реализации - ну при тыки - определите, что вы тыкнули на фигуру, которую нужно двигать, а затем в ccTouchesMoved двигаете этот спрайт за пальцем.
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 ячейки спрайты одного цвета, если да, то удалить их. Поэтому рассматривала массивы.
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 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 сетить по ключу номера ячейки. Каждому свое
MargoK
0 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 7
11.05.2012, 20:28  [ТС]     Относится ли точка прикосновения к одному из элементов игрового поля? #7
zulkis,
Спасибо, это мне помогло. А как же это:
Цитата Сообщение от MargoK Посмотреть сообщение
В последствии мне нужно будет сверять, допустим, находится ли в 14,15 и 21 ячейки спрайты одного цвета, если да, то удалить их. Поэтому рассматривала массивы.
У меня спрайты генерятся рандомным цветом радуги и мне нужно определить находятся ли рядом 3 спрайта одного цвета (там картинки цветные).
pasha_ost
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 3
07.03.2013, 04:12     Относится ли точка прикосновения к одному из элементов игрового поля? #8
нужен толковый программер пишущий на objectiv-c из минска!! если есть такой свяжитесь по контакту Остапченко Паша или по тел 8-044-5884110
Yandex
Объявления
07.03.2013, 04:12     Относится ли точка прикосновения к одному из элементов игрового поля?
Ответ Создать тему
Опции темы

Текущее время: 10:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru