реализовать попадание в цель
ребят, объясните пожалуйста хотя бы на словах как на этой страничке можно реализовать событие, которое наступает при совпадении координат снаряда(объект bullet) и вражеского корабля(объект ShipEnemy)
хватит ли тех нескольких паттернов, которые я использовал на страничке(factory, observer, singletone) или нужно изучить ещё что-то? ps вот то же самое, но на fiddle |
Цитата:
|
это всё понятно. но не соображу как проверить
мои мысли по этому поводу были такие: вражеский корабль это не точечный объект, а прямоугольник. то есть для проверки нужно будет создать массив, каждый элемент которого будет соответствовать определённому вражескому кораблю и в свою очередь будет иметь 4 элемента с индексами top1, top2, left1, left2 непонятно где хранить этот массив допустим, я создам для этой цели отдельный объект - deathCoords. в нём будут: 1. храниться массив с координатами вражеских кораблей 2. храниться метод, который будет срабатывать при попадании снаряда во вражеский корабль 3. при каждом шаге снаряда в этот объект будут передаваться параметрами: координаты снаряда, id снаряда 4. при каждом шаге вражеского корабля в этот массив будут передаваться: координаты корабля, id корабля но такой подход мне показался неверным. потому что во-первых это уже напоминает процедурный стиль, а не ООП. во-вторых потому что проверка координат это всё таки не сущность(как например снаряд, звезда, вражеский корабль и т.д.), это скорее логика. и под неё выделять объект мне кажется не правильно |
Цитата:
|
Цитата:
Например того же "снаряда"... Типа попал/не_попал... |
вот сделал как вы советовали. скажите пожалуйста, не слишком ли много ресурсов я использовал для такой простой проверки? дело в том, что если результаты вычислений вывожу в консоль, то браузер почти виснет... может существуют какие-то шаблонные ООП-решения для подобной задачи всё таки?..
ps то же самое в fiddle |
Цитата:
Цитата:
|
да как ни назови. прогонять несколько циклов при каждом движении наряда это как то не очень хорошо
|
Цитата:
|
Часовой пояс GMT +3, время: 18:01. |