Js实现简单的洗牌

基础篇

洗牌采用的是,每一张牌,与后面随机一张牌来交换位置。

扑克牌采用编码制(如,0代表红桃A,依次类推)为了编码方便,扑克牌不含大小王,故52张。

一、扑克牌的了解

扑克(英文:Poker)
一副扑克牌有54张牌,其中52张是正牌,另2张是副牌(大王和小王)。
52张正牌又均分为13张一组,并以黑桃、红桃、草花、方块四种花色表示各组,每组花色的牌包括从1-10(1通常表示为A)以及J、Q、K标示的13张牌。
为了简化对象,我们把扑克作为Card类,属性值为suit 和 face。
function Card(){

                this.suit = ""
this.face = "" this.setSuit = function(newSuit){
this.suit = newSuit
} this.setFace = function(newFace){
this.face = newFace
} this.showCard = function(){
document.write(this.suit+this.face +'\n')
}
}

二、洗牌思想

洗牌采用第一张,与后面随机一张交换位置。

用数组poker[53]代表一副扑克牌,多出的一张作为用来交换牌时的temp容器。

    for(i = 0; i < poker.length-1; i++){
var rnd = Math.round( Math.random() * 51 )
poker[52] = poker[rnd] poker[rnd] = poker[i]
poker[i] = poker[52] }

三、牌与面值关联

这个通过两个简单的数组就可以搞定。

一个存放suit,另一个存放face

var suitGroup = ["红桃", "方块", "梅花", "黑桃"]
var faceGroup = ["A", "1", "2", "3", "4", "5", "6", "7", "8","9", "J", "Q", "K" ] for(i = 0; i < poker.length-1 ; i++){
var card = new Card()
card.setSuit( suitGroup[ poker[i]%4 ] )
card.setFace( faceGroup[ poker[i]%13 ] )
card.showCard()
}
上一篇:SQL Server 2008空间数据应用系列九:使用空间工具(Spatial Tools)导入ESRI格式地图数据


下一篇:python基础---面向对象的概念