在我的拼写游戏中,有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语句?
发布于 2012-09-17 22:09:33
首先-我建议你这样做是错误的-你是从游戏的HTML/CSS表示来确定游戏状态的。我建议您创建一个表示游戏状态的对象,然后使用该对象来确定需要对HTML/CSS表示进行的操作。这也将使你在这里尝试做的事情变得容易得多。
例如,你最终可能会说这样的话:
if (gamestate.wordscomplete == 3) {//fade board//}...which比钻研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个字母计数单词的计数。
https://stackoverflow.com/questions/12457887
复制相似问题