2

こんにちは、スクラブルゲームを作ろうとしています。

各文字に値を与え、入力ボックスが変更された場合はそれらを合計したいと思います。

検索して、変更時に数値を合計する方法を見つけましたが、文字の値を数値に置き換える方法を理解するのに本当に苦労しています。ここに私が修正したいくつかのコードがあります:

$(document).on("change", "input[id ^= 'r1box']", function() {

    var sum = 0;

    $("input[id ^= 'r1box']").each(function(){
        sum += +$(this).val();
    });

    $("#r1totbox_id").val(sum);
});

ID が「r1box」で始まる 7 つのボックスと、ID「r1totbox_id」の合計ボックスがあります。現時点では、数字を入れると合計になりますが、ボックス 1 に「a」、ボックス 2 に「b」を入れて合計 4 になるようにしたいと考えています。

助けてくれてありがとう。

4

2 に答える 2

0
var convert_letters_to_numbers(letter) {
    letter = letter.toLowerCase(); //this prevents any case-sensitive problem
    if (letter == 'a') return 1;
    ...
    /* etc etc etc */
}

次に、コードで:

sum += convert_letters_to_numbers($(this).val());   

これは、すべてのゲームで同じ値を使用することを前提としています。動的にしたい場合は、マッピング用の辞書を追加する必要があります(または、他の場所で生成できるように、jsonオブジェクトを追加することをお勧めします)。

var mapping_array = new Array();
mapping_array['a'] = 3;
mapping_array['b'] = 1;
....

次に、それを繰り返し処理して、対応する値を返します

あなたの最後のコメントで:

var dictionary = {"a":1, "b":2};

convert関数は、単純なreturnステートメントを実行する必要があります。

return dictionary[letter];

ループは必要ありません

于 2013-03-12T14:09:58.383 に答える
0

文字をスクラブル ポイント値にマッピングする配列が必要です ( Source )。

var points = [1, 3, 3, 2, 1, 4, 2, 4, 1, 8, 5, 1, 3, 1, 1, 3, 10, 1, 1, 1, 1, 4, 4, 8, 4, 10];

次に、大文字に変換し、ASCII コード値から 65 (A) を差し引いてポイント配列のインデックスを取得することにより、入力を取得して正しいポイント値に一致させることができます。

var letter = $(this).val().toUpperCase();
if (letter.length == 1) {
    var letterIndex = letter.charCodeAt(0) - 65;
    sum += points[letterIndex];
}

デモ: http://jsfiddle.net/Cp3Fd/

于 2013-03-12T14:11:26.240 に答える