0

我正在创建一个 JavaScript 战舰游戏。游戏运行良好。我已经创建了游戏,以便用户最多有 25 次失误 - 如果他们达到 25 次,那么游戏就结束了。

我现在想创建一个函数,在游戏结束时,该函数会检查未命中的次数,并提醒用户他们的分数和排名名称。

我通过 ((25/misses)*100) 计算了分数。

所以这些是未命中的可能分数。

未命中 | 得分 (1 | 2500) (2 | 1250) (3 | 833) (4 | 625) (5 | 500) (6 | 417) (7 | 357) (8 | 313) (9 | 278) (10 | 250) ) (11 | 227) (12 | 208) (13 | 192) (14 | 179) (15 | 167) (16 | 156) (17 | 147) (18 | 139) (19 | 132) (20 | 125) ) (21 | 119) (22 | 114) (23 | 109) (24 | 104) (25 | 0)

我的军衔名称是 1) 舰队上将 2) 上将 3) 中将 4) 海军少将 5) 准将 6) 在行动中阵亡

这些就是我如何为未命中的人分配等级名称。

未命中 | 军衔名称 (0-12 | 海军上将) (13-15 | 海军上将) (16-19 | 中将) (20-24 | 准将) (25 | 杀戮行动)

我创建了一个名为“misses”的变量。每次你错过,显然变量增加一。

所以假设你刚刚打完比赛,有 14 次失误。我希望该函数检查变量“未命中”,然后为其分配适当的分数和排名。

我认为我可能会使用一个数组来记录未命中的得分。任何想法确切的代码是什么?请帮忙!

4

1 回答 1

0

最简单的解决方案:

function getRank(misses) {
    if (misses < 13)
        return 'Admiral of the Fleet';
    if (misses < 16)
        return 'Admiral';
    if (misses < 20)
        return 'Vice-Admiral';
    if (misses < 25)
        return 'Commodore';
    return 'Killed In Action';
}

你也可以做这样的事情,它更复杂并且使用更多的内存,但会导致更快getRank()- 如果你不会有超过 25 次未命中,内存使用不会成为问题。

var getRank = (function () {
    var rank, i = 0, j,
        map = {},
        ranks = [
            [13, 'Admiral of the Fleet'],
            [16, 'Admiral'],
            [20, 'Vice-Admiral'],
            [25, 'Commodore'],
            [26, 'Killed In Action']
        ];
    for (j = 0; rank = ranks[j]; j++)
        for (; i < rank[0]; i++)
            map[i] = rank[1];
    return function (misses) {
        return map[misses];
    };
})();
于 2012-05-04T11:38:20.270 回答