@AlexAlex000

Как сравнить данные объектов в двух ArrayList?

Пишу небольшую игрушку под андройд.
Был у меня такой вот код, который проверял столкновение двух объектов(взятый с одной из статей хабра). Астероиды(asteroid), которые хранятся в Arraylist(Asteroids) и космический корабль(ship).
for (Asteroid asteroid : asteroids)
            if (asteroid.isCollision(ship.x, ship.y, ship.size)) {
            }

позже мне захотелось добавить сбор монеток(сoin) а значит надо было удалять их при столкновении с кораблем. Поэтому я применил Iterator для удаления конкретной столкнувшейся с кораблем монетки. С этим тоже особых проблем не возникло.
for(Iterator<Coin> iterator = coins.iterator(); iterator.hasNext();) {
            Coin coin = iterator.next();
            if (coin.isCollision1(ship.x, ship.y, ship.size)) {
                iterator.remove();
            }
        }


Но теперь я хочу чтобы при столкновении монетки(coin) и астероида(asteroid) оба удалялись. Я так понимаю мне нужно что то вроде такого:
for(Iterator<Coin> iterator = coins.iterator(); iterator.hasNext();) {
int x;
int y;
int size;
if (coin.isCollision1(x, y, size)) {
                iterator.remove();
                        /*а здесь какая то магия вызывающая итератор Asteroids и подставляющая координаты астероидов x,y,size для сравнения в int x, int y, int size. */
        }
}

Но ума не приложу как это сделать. Честно гуглил несколько дней, но не нашел ничего по теме.
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
jamakasi666
@jamakasi666
Просто IT'шник.
В вашем случае все просто, но это не совсем правильно т.к. сложность вырастает в обсчетах.
Нужен просто вложенный цикл.
Цикл астероид_итератор астероиды{
цикл монета_итератор монеты{
если монета_итератор.колизия(астероид_итератор.coords) удалить обоих
}
}

Но опять же это не совсем правильно и если объектов много то вообще неприменимо так вот в лоб.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы