0

私はjavascript戦艦ゲームを作成しています。ゲームは正常に動作します。ユーザーが最大25回ミスするようにゲームを作成しました。25回に達するとゲームオーバーになります。

ここで、ゲームの終了時にミスの数をチェックし、ユーザーにスコアとランク名を警告する関数を作成したいと思います。

((25 /ミス)* 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 |戦死)

'misss'という名前の変数を作成しました。見逃すたびに、変数は明らかに1ずつ増加します。

つまり、14回のミスでゲームをプレイして終了したとしましょう。関数で変数「misss」をチェックしてから、適切なスコアとランクを割り当てたいと思います。

スコア付きのミスにはおそらく配列を使用できると思います。正確なコードは何ですか?助けてください!

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 に答える