Repository navigation
Expand file tree
/
Copy pathpoker.js
More file actions
67 lines (58 loc) · 1.76 KB
/
Copy pathpoker.js
File metadata and controls
67 lines (58 loc) · 1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
//;(function(){
//生成所有牌,并且记录已出的牌,随机产生剩余的牌
//num为牌的副数
var poker=function(num){
this.num=num;
this.type=['c','d','h','s'];//方块,梅花,红心,黑桃 'club','diamond','heart','spade'
this.pokers=[];//所有牌 下标[0,51]
this.pokerState=[];//使用过的牌的标记,0为未使用 1未已使用
this.usedPokerNum=0;
this.init(this.num);
}
//生成n副牌 初始化pokers和pokerState
poker.prototype.init=function(num){
var temp=num;
for(var i=0;i<this.type.length;++i){
for(var j=1;j<=13;++j){
while(temp>0){
this.pokers.push(this.type[i]+j);
this.pokerState.push(0);
--temp;
}
temp=num;
}
}
//console.log(this.pokers);console.log(this.pokerState);
};
//随机生成一个牌 返回牌 eg:'c1'
poker.prototype.generateOnePoker=function(){
var totalnum=this.pokers.length;//当前可用牌的数量
//生成一张牌,x为下标
var x=parseInt(Math.floor(Math.random()*totalnum));
var times=0;//记录随机生成次数,如果随机生成30次还没有找到可出的牌,则按照顺序找
while(this.pokerState[x]!=0 && times<30){
x=parseInt(Math.floor(Math.random()*totalnum));
++times;
}
if(this.pokerState[x]!=0){
for (var i = 0; i < totalnum; i++)
if(this.pokerState[i]==0){
x=i;
break;
}
}
this.pokerState[x]=1;
this.usedPokerNum+=1;
//console.log(this.pokers);console.log(this.pokerState);
return this.pokers[x];
};
//判断当前扑克还能否生成牌 如果都发完了 return false 否则return true
poker.prototype.canGenerate=function(){
if(this.usedPokerNum<this.pokers.length){
return true;
}
return false;
};
exports.poker=poker;
// window['poker']=poker;
// })();