《JavaScript 基础教程(第6版)》第三章中的Bingo卡片程序实例在《JavaScript 基础教程(第6版)》第三章中有一个Bingo卡片的示例程序。

规则:在 5*5 的矩形格子中,每格都存有一个随机整数,第1列数值取1-15,第2列数值取16-30,其后的列依此类推,要求所取的随机数值是没有重复所取过的。而在矩形格子中有一个空的格子,不存数值。

HTML代码如下:

>

CSS代码如下:

}

JavaScript 代码如下:

window.onload = init;
//定义存放随机整数的容器
var usedNums = [];
usedNums.length 
= 15;

var getIdName = function(idName) {
    
if(!document.getElementById) return;
    
this.elem = document.getElementById(idName);
    
return this.elem;
}

function init() {
    elem 
= getIdName('reload');
    
if(!elem) return;
    elem.onclick 
= anotherCard;
    newCard();
};
function newCard() {
    
for(var i=0; i<24; i++) {
        setSquare(i);
    }
}
function setSquare(thisSquare) {
    
var currSquare = 'square' + thisSquare;
    
var colPlace = [012340123401340123401234];
    
var colBasis = colPlace[thisSquare] * 15;
    
var newNum;
    
do {
        newNum 
= colBasis + getNewNum() + 1;
    }
    
while(usedNums[newNum])
    usedNums[newNum] 
= true;
    elem 
= getIdName(currSquare);
    elem.innerHTML 
= newNum;
    
}
function getNewNum() {
    
//值在1与15间的随机数
    var r = Math.floor(Math.random() *15);
    
//将该值返回
    return r;
}

function anotherCard() {
    
for(i=1; i<usedNums.length; i++) {
        usedNums[i] 
= false;
    }
    newCard();
    
return false;
}

上面的程序随机算法思路:

每列的随机整数是每次取一个值,将该值放在容器里,前提是在容器中没有同样的值。这样,取的随机值既不会重复,又保证了足够的随机。是个非常巧妙的算法。

那么,我们想要红色的方格在5*5的矩形方格中随机的显示出来,将HTML代码修改如下:

>

JavaScript代码如下:

;
}

我们将处理的数据不显示在内容层上,也就是说隐藏在行为层了。那么,随便取一个1到25间的整数值,这里我们取的是数值 2。将它显示的元素 id 设为 'free'。它便有了特定的样式。

呵呵。经典的“贪吃蛇”游戏中蛋的随机算法不就是这样的嘛?

相关文章:

  • 2021-11-17
  • 2022-12-23
  • 2021-06-04
  • 2022-12-23
  • 2021-10-06
  • 2022-03-02
  • 2022-12-23
  • 2022-02-02
猜你喜欢
  • 2022-12-23
  • 2022-03-05
  • 2021-10-27
  • 2021-07-04
  • 2022-12-23
  • 2022-12-23
  • 2021-08-05
相关资源
相似解决方案