Работа с одновременными столкновениями в Java

Я создаю 2D-игру, в которой игрок может столкнуться с вражескими кораблями. В настоящее время, когда игрок поражает вражеский корабль, вражеский корабль удаляется. Еще одна особенность, с которой я борюсь, заключается в том, что когда два вражеских корабля одновременно поражают игрока, игрок должен быть удален. Есть ли способ сделать это?

Ниже у меня есть класс Collision, который обрабатывает столкновения между игроком и противником.

    // if enemy runs into player will return true
public static boolean Collision (EntityEnemy enemyShips, EntityPlayer entP ) {

        if (enemyShips.getBounds().intersects(entP.getBounds())) {
            return true;
        }

    return false;

}

// returning two enemies colliding with the player 
public static boolean doubleCollision (EntityEnemy enemyShips, EntityPlayer entP ) {

        if (enemyShips.getBounds().intersects(entP.getBounds())) {
            count ++;

            if (count == 2) {
                return true;
            }
    }


    return false;
}

псевдокод: for(EntityEnemy enemy : enemies) { if (isCollision(...)) collisions.add(enemy); } if (collisions.size() >= 2) player.remove();

Michael 18.03.2019 17:00
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
36
1

Ответы 1

Думайте в игре, основанной на поворотах. Когда враг сталкивается с игроком и запускается поток, отвечающий за анализ статуса игры, он будет знать каждое пересечение кораблей, чтобы вы могли видеть все корабли, с которыми у игрока есть пересечения. Мой совет:

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

Другие вопросы по теме