Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.12.2013, 13:08
Аспирант
Отправить личное сообщение для cyklop_77 Посмотреть профиль Найти все сообщения от cyklop_77
 
Регистрация: 01.09.2013
Сообщений: 33

реализовать попадание в цель
ребят, объясните пожалуйста хотя бы на словах как на этой страничке можно реализовать событие, которое наступает при совпадении координат снаряда(объект bullet) и вражеского корабля(объект ShipEnemy)

хватит ли тех нескольких паттернов, которые я использовал на страничке(factory, observer, singletone) или нужно изучить ещё что-то?

ps
вот то же самое, но на fiddle
Ответить с цитированием
  #2 (permalink)  
Старый 27.12.2013, 13:20
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от cyklop_77
событие, которое наступает при совпадении координат снаряда(объект bullet) и вражеского корабля(объект ShipEnemy)
Снаряд ведь движется... Т.е. наступает момент вычисление его новых координат - вот тут и проверь, не попал ли он в кого-либо.
Ответить с цитированием
  #3 (permalink)  
Старый 27.12.2013, 14:17
Аспирант
Отправить личное сообщение для cyklop_77 Посмотреть профиль Найти все сообщения от cyklop_77
 
Регистрация: 01.09.2013
Сообщений: 33

это всё понятно. но не соображу как проверить

мои мысли по этому поводу были такие:
вражеский корабль это не точечный объект, а прямоугольник. то есть для проверки нужно будет создать массив, каждый элемент которого будет соответствовать определённому вражескому кораблю и в свою очередь будет иметь 4 элемента с индексами top1, top2, left1, left2

непонятно где хранить этот массив

допустим, я создам для этой цели отдельный объект - deathCoords. в нём будут:
1. храниться массив с координатами вражеских кораблей
2. храниться метод, который будет срабатывать при попадании снаряда во вражеский корабль
3. при каждом шаге снаряда в этот объект будут передаваться параметрами: координаты снаряда, id снаряда
4. при каждом шаге вражеского корабля в этот массив будут передаваться: координаты корабля, id корабля

но такой подход мне показался неверным. потому что во-первых это уже напоминает процедурный стиль, а не ООП. во-вторых потому что проверка координат это всё таки не сущность(как например снаряд, звезда, вражеский корабль и т.д.), это скорее логика. и под неё выделять объект мне кажется не правильно
Ответить с цитированием
  #4 (permalink)  
Старый 27.12.2013, 14:19
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от cyklop_77
вражеский корабль это не точечный объект, а прямоугольник. то есть для проверки нужно будет создать массив, каждый элемент которого будет соответствовать определённому вражескому кораблю
Так у тебя уже есть сами корабли. Зачем еще какой-то "массив"?
Ответить с цитированием
  #5 (permalink)  
Старый 27.12.2013, 14:21
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от cyklop_77
проверка координат это всё таки не сущность
Таки метод.
Например того же "снаряда"... Типа попал/не_попал...
Ответить с цитированием
  #6 (permalink)  
Старый 27.12.2013, 16:26
Аспирант
Отправить личное сообщение для cyklop_77 Посмотреть профиль Найти все сообщения от cyklop_77
 
Регистрация: 01.09.2013
Сообщений: 33

вот сделал как вы советовали. скажите пожалуйста, не слишком ли много ресурсов я использовал для такой простой проверки? дело в том, что если результаты вычислений вывожу в консоль, то браузер почти виснет... может существуют какие-то шаблонные ООП-решения для подобной задачи всё таки?..

ps
то же самое в fiddle
Ответить с цитированием
  #7 (permalink)  
Старый 28.12.2013, 14:56
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от cyklop_77
вот сделал как вы советовали
Как там играть?

Сообщение от cyklop_77
не слишком ли много ресурсов я использовал для такой простой проверки?
Х/з какие там ресурсы... Проверить в цикле N кораблей это разве "использование ресурсов"?
Ответить с цитированием
  #8 (permalink)  
Старый 29.12.2013, 13:47
Аспирант
Отправить личное сообщение для cyklop_77 Посмотреть профиль Найти все сообщения от cyklop_77
 
Регистрация: 01.09.2013
Сообщений: 33

да как ни назови. прогонять несколько циклов при каждом движении наряда это как то не очень хорошо
Ответить с цитированием
  #9 (permalink)  
Старый 30.12.2013, 13:06
Аспирант
Отправить личное сообщение для cyklop_77 Посмотреть профиль Найти все сообщения от cyklop_77
 
Регистрация: 01.09.2013
Сообщений: 33

Сообщение от ksa Посмотреть сообщение
Как там играть?
а играть тута
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как реализовать эффект lazyload sanek.me Events/DOM/Window 21 15.02.2017 12:31
Как реализовать отправку содержимого из iframe нажатием комбинации клавиш ctrl+enter Naizer Общие вопросы Javascript 4 27.11.2013 17:39
Реализовать функционал Armen Работа 1 25.02.2011 04:12
Как реализовать взаимодействие окон? JSTalker ExtJS 1 29.06.2010 14:29
Как реализовать? Fliand Элементы интерфейса 4 22.08.2009 19:47