Удаление div при попадание в него другова div

209
03 марта 2017, 01:20

Привет есть код.
С верху экрана идут враги в внизу ты управляем дивом который стреляет. Так вот проблемы

  1. Как правильно сделать что бы див-враг убивался то есть когда пуля попадает в его распоряжение

  2. Тут убийство врага решено но это очень сильно тормозит игру. я перебираю всех врагов в цикле и проверю попала ли в него пуля.Но иногда пуля через него проходит и он идет дальше

Вот код.

function kill()
        {
            setInterval(function ()
            {
                $('.enemy').each(function (i, elem)
                {
                    if ($(this).offset().top + $(this).outerHeight(true) >= $(".ammo").offset().top && $(this).offset().left <= $(".ammo").offset().left && $(this).offset().left + $(this).outerWidth(true) >= $(".ammo").offset().left)
                    {
                        $(elem).remove();
                        scoreCount++;
                    } 
                });
            },1);
        }    

Весь код целиком

<!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <script src="Scripts/JavaScript.js"></script>
        <script src="Scripts/jquery-3.1.1.min.js"></script>
        <link rel="stylesheet" href="StyleSheet.css"/>
    </head>
    <body>
        <script>
            var scoreCount = 0;
            var j = 0;
            $(function ()
            {
                $(".play img").click(function ()
                {
                    $(".go").empty();
                    $(".go").append('<div class="soldier"></div >');
                    addEnemy();
                    Shoot();
                    kill();
                });
            });
            function addEnemy()
            {
                setInterval(function ()
                {
                    j++;
                    var lef = getRandomFloat(50, 1250);
                    $(".go").append('<div class=' + j.toString() + '></div >');
                    $('.' + j.toString() + '').css({ "background-color": "#eee", "height": "50px", "width": "50px", "position": "absolute" }).offset({ top: 0, left: lef }).addClass("enemy");
                    toping($('.' + j.toString() + ''));
                }, 1000);
            }
            function getRandomFloat(min, max)
            {
                return Math.random() * (max - min);
            }
            var hp = 100;
            function toping(element) {
                var i = 0;
                $(".hp").text("100");
                setInterval(function () {
                    i += 1;
                    element.offset({ top: i });
                    var q = element.offset().top;
                    if (q == 500)
                    {
                        hp = hp - 10;
                        //$(".hp").text(hp);
                        element.remove();
                        if (hp <= 0)
                        {
                            $(".go").remove();
                            $(".lose").show();
                        }
                    }
                }, 100)
            }
            function topingAmmo(elementAmmo)
            {
                var i = elementAmmo.offset().top;
                setInterval(function ()
                {
                    i -= 1;
                    elementAmmo.offset({ top: i });
                    if (i <= 20)
                    {
                        elementAmmo.remove();
                    }
                }, 10)
            }
            var i = 0;
            $(document).keydown(function (e)
            {
                e.preventDefault();
                if (e.which == 39) {
                    i += 20;
                    $('.soldier').offset({ left: i });
                }
                else if (e.which == 37) {
                    i -= 20;
                    $('.soldier').offset({ left: i });
                }
                else
                {
                    return;
                }
            });
            function Shoot()
            {
                var A = 0;
                setInterval(function ()
                {
                    A--;
                    var t = $('.soldier').offset().top;
                    var l = $('.soldier').offset().left;
                    $(".go").append('<div class=' + A.toString() + '></div >');
                    $('.' + A.toString() + '').css({ "background-color": "black", "height": "6px", "width": "6px", "position": "absolute" }).offset({ top: t - 25, left: l + 32 }).addClass("ammo");
                    topingAmmo($('.' + A.toString() + ''));
                },200);
            }
            function kill()
            {
                setInterval(function ()
                {
                    $('.enemy').each(function (i, elem)
                    {
                        if ($(this).offset().top + $(this).outerHeight(true) >= $(".ammo").offset().top && $(this).offset().left <= $(".ammo").offset().left && $(this).offset().left + $(this).outerWidth(true) >= $(".ammo").offset().left)
                        {
                            $(elem).remove();
                            scoreCount++;
                        } 
                    });
                },1);
            }
        </script>
        <div class="lose">
            <img src="Images/0.png"/>
        </div>
        <div class="go">
            <div class="play">
                <img src="Images/Play.jpg" />
            </div>
            <h1 class="choise">Выберите сложность</h1>
            <div class="level">
                <div class="easy"><h1>легко</h1></div>
                <div class="medium"><h1>cредне</h1></div>
                <div class="hard"><h1>тяжело</h1></div>
            </div>
        </div>
    </body>
    </html>
READ ALSO
Реверс js массива

Реверс js массива

Пытаюсь написать функцию на JS которая принимает заданный массив и реверсирует егоЯ знаю о том что есть специальный метод для этого, но есть...

300
Вписывание изображений в блок

Вписывание изображений в блок

Подскажите как можно сделать вписывание изображений в зависимости от их количества в блок ?

314
Кривой скроллинг к элементу

Кривой скроллинг к элементу

Доброго времени суток

161