使用

时间:2016-07-30 07:18:25

标签: javascript

//我是函数式编程的新手,这是使用函数式编程编写它的最佳方法。

    var SQUARE_X = 101,
        SQUARE_Y = 83;

// function to detect the enemy collison
    function collisionDetect(axisA, axisB) {
        var playerX = Math.floor(axisA.x / SQUARE_X);
        var playerY = Math.floor(axisA.y / SQUARE_Y);
        if (Array.isArray(axisB)) {
            for (var i = 0; i < axisB.length; i += 1) {
                var enemyX = Math.floor(axisB[i].x / SQUARE_X);
                var enemyY = Math.floor((axisB[i].y) / SQUARE_Y);
                if (enemyX === playerX && enemyY === playerY) {
                    return true;
                }
            }
        } else {
            var enemyX = Math.floor(axisB.x / SQUARE_X);
            var enemyY = Math.floor((axisB.y) / SQUARE_Y);
            if (enemyX === playerX && enemyY === playerY) {
                return true;
            }
        }

    };

1 个答案:

答案 0 :(得分:1)

我不确定您对functional的意思,但如果您只是想重构代码,请提供一些线索:

var SQUARE_X = 101,
    SQUARE_Y = 83;

// function to detect the enemy collison
function collisionDetect(axisA, axisB) {
    var playerX = Math.floor(axisA.x / SQUARE_X);
    var playerY = Math.floor(axisA.y / SQUARE_Y);

    return ([].concat(axisB)).some(function(ab) {
        var enemyX = Math.floor(ab.x / SQUARE_X);
        var enemyY = Math.floor(ab.y / SQUARE_Y);
        if (enemyX === playerX && enemyY === playerY) {
            return true;
        }
        return false;
    });
}

这里的好处是代码更短,登录只放在1个位置,所以如果你需要更改它很容易。

不确定为什么你需要这里的功能。