we like to be together

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()
}        
                 
            

 

 

posted @ 2014-04-15 16:10  微笑上弦月  阅读(2324)  评论(0编辑  收藏  举报