BINGO卡片(7)

日期:2016.1.27

Create a Bingo Card

B I N G O
         
         
    Free    
         
         

Click here to create a new card

解决上节空白区域问题,使用do/while循环。

1.var newNum;
在前面的示例中,在创建newNum变量时对它进行初始化。因为本次讲多次设置它,所以在进入循环之前创建它,这样只需创建一次。

2.do{ }
这一行开始do代码块。关于这种循环必须记住的一点是:do块中的代码至少会执行一次。

3.while (usedNums[newNum]);
whlie检查会使do代码块反复执行,直到检查结果为false为止。在这个示例中,我们检查usedNums[]数组中newNum位置上的值,从而检测newNum是否已经使用过了。如果这个数字已经用过了,控制就被传递回do块的开头,整个过程再次重复。最终,会找到一个没有使用过的数字。之后,会离开循环,将usedNums设置为true,并将newNum写到卡片上。

window.onload = initAll;

var usedNums = new Array(76);

function initAll () {
	if (document.getElementById){
		for (var i = 0; i < 24 ; i++) {
			setSquare(i);
		}
	}
	else {
		alert("Sorry,your browser doesn't support this script.")
	}
}

function setSquare(thisSquare){
	var currSquare = "square" + thisSquare;
	
	var colPlace = new Array(0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4);
	var colBasic = colPlace [thisSquare] * 15;
	
	var newNum;
	do{
		newNum = colBasic + getNewNum() + 1;
	}
	while (usedNums[newNum]);

	usedNums[newNum] = true;
	document.getElementById(currSquare).innerHTML = newNum;
}

function getNewNum() {
	return Math.floor(Math.random() * 15);
}