0

私のスペリングゲームでは、3〜6の異なるサイズの単語があります。グリッド内で一定量の単語が完了すると、グリッドの残りの部分は消えていきます。1つだけを考慮するのではなく、すべてのワードサイズの種類を合計してほしい。たとえば、2つの単語が完成したら、現時点でフェードアウトする必要があります。問題は、2、3文字の単語が完成したとき、または2つの4文字の単語が完成したときなどにのみフェードすることです。

var completeLetters = $('.wordglow2').length;
var threeLetter = (completeLetters / 3);
var fourLetter = (completeLetters / 4);
var fiveLetter = (completeLetters / 5);
var sixLetter = (completeLetters / 6);


if (threeLetter == 2) {
    $('table').fadeOut(2000);
}
if (fourLetter == 2) {
    $('table').fadeOut(2000);
}
if (fiveLetter == 2) {
    $('table').fadeOut(2000);
}
if (sixLetter== 2) {
    $('table').fadeOut(2000);
}

すべての単語を組み合わせた変数を作成し、そのためのifステートメントを作成する方法はありませんか?

4

1 に答える 1

3

まず、これを間違った方法で行っていることをお勧めします。ゲームの HTML/CSS 表現からゲームの状態を判断しています。ゲームの状態を表すオブジェクトを作成し、このオブジェクトを使用して HTML/CSS 表現に必要な操作を決定することをお勧めします。これにより、ここでやろうとしていることがずっと簡単になります。

たとえば、次のようなことが言えるようになるかもしれません...

if (gamestate.wordscomplete == 3) {//fade board//}

...これは、HTML を掘り下げるよりもはるかに快適です。しかし、私は脱線します...

それが正しい場合、クラスは手紙wordglow2に追加されます。グリッド内のそれぞれに単語を含めることができます。そう...<tr>

function gamestate() {
  var words = []; //new array to store completed word counts
  var wordscompleted = 0; //overall word count
  //create an entry for 3,4,5, and 6 letter words
  for (var wc = 3; wc <=6 ; wc++) {words[wc] = 0;}

  $('table.tablestyle > tr').each( function(i,el) {
    // get the number of complete letters in this row
    var wordlength = $(el).find('.wordglow2').length; 
    if (wordlength >=3 && wordlength <= 6) { 
      // a completed word should not be outside of this range anyway
      words[wordlength]++; //increment the appropriate counter
      wordscompleted++; //increment overall counter
    }
  });
  //return a gamestate object 
  return { wordscompleted : wordscompleted , words : words };
}; 

上記の関数は、ゲーム テーブルの各行を調べて、wordglow2セルの数をカウントします。これが 3 ~ 6 の場合、全体のカウンターがインクリメントされ、各ワード長のカウンターもインクリメントされます。

次のように使用できます...

var gs = gamestate();

gs.wordscompleted //total words completed
gs.words[3]       //total 3-letter words completed
gs.words[4]       //total 4-letter words completed etc etc

アップデート

http://jsfiddle.net/HZX6k/6/

このフィドルは、グローバル オブジェクトを使用してゲームの状態を追跡し、カウントをインクリメントし、3、4、5、6 文字カウントの単語ごとにカウントを増やします。

于 2012-09-17T14:09:32.943 に答える