将已完成的单词加在一起

时间:2012-09-17 11:00:50

标签: javascript jquery

在我的拼写游戏中,有3-6个不同大小的单词。一旦在网格中完成了一定数量的单词,网格的其余部分就会消失。我希望它能够将所有单词大小的变体加起来而不仅仅考虑一个。例如,一旦两个单词完成,我现在可以使用fadeOut。问题是,当两个,三个字母的单词完成或两个四个字母的单词完成时,它才会消失。

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语句?

1 个答案:

答案 0 :(得分: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个字母计数单词的计数。