问征夫以前路
感谢所有关心过支持过我的人, 感谢所有恨过我嘲笑过我的人 !
posts - 30,comments - 147,trackbacks - 0
 1package com.web;
 2
 3public class Card {
 4
 5    private String face; // A, K, Q, J, 10,  2
 6    private String suit; // Spade, Heart, Club, Diamond
 7
 8    public Card(){
 9        
10    }

11    
12    //定义一个构造函数用于初始化点数2~A的牌
13    public Card(String suit, String face) {
14        this.face = face;
15        this.suit = suit;
16    }

17
18    //定义一个构造函数用于初始化大王和小王 
19    public Card(String suit){
20        this.face = "";  //如果不给face赋值的话,洗牌和切牌后的大小王前面会显示“null” 
21        this.suit = suit;
22    }

23    
24    protected String getFace() {
25        return face;
26    }

27
28    protected String getSuit() {
29        return suit;
30    }

31
32    public String toString() {
33        return suit + " " + face;
34    }

35
36    public static void shuffle(Card[] deck, int startIndex, int size, int splitIndex) {
37        if (splitIndex * 2 > size) {
38            Card.swap(deck, startIndex, splitIndex, size - splitIndex);
39            shuffle(deck, size - splitIndex, splitIndex, size - splitIndex);
40        }
 else if (splitIndex * 2 < size) {
41            Card.swap(deck, startIndex, size - splitIndex, splitIndex);
42            shuffle(deck, startIndex, size - splitIndex, splitIndex);
43        }
 else {
44            Card.swap(deck, startIndex, splitIndex, splitIndex);
45        }

46
47    }

48
49    public static void swap(Card[] deck, int srcIndex, int dstIndex, int size) {
50        String face = "";
51        String suit = "";
52        for (int i = 0; i < size; i++{
53            face = deck[srcIndex + i].face;
54            suit = deck[srcIndex + i].suit;
55            deck[srcIndex + i].face = deck[dstIndex + i].face;
56            deck[srcIndex + i].suit = deck[dstIndex + i].suit;
57            deck[dstIndex + i].face = face;
58            deck[dstIndex + i].suit = suit;
59        }

60    }

61    
62    public static void main(String[] args){
63        Card[] deck = new Card[54];
64        String f[] = "A""2""3""4""5""6""7""8""9""10""J""Q""K" };
65        // String s[] = {"Spade","Heart","Club","Diamond"};
66        String s[] = "黑桃""红桃""梅花""方块" };
67        for (int i = 0; i < s.length; i++{
68            for (int j = 0; j < f.length; j++{
69                deck[i * 13 + j] = new Card(s[i], f[j]);
70            }

71            deck[52= new Card("小王"); 
72            deck[53= new Card("大王"); 
73        }

74        int rnd = 0;
75        int numOfShuffle = 10;
76        for (int i = 0; i < numOfShuffle; i++{
77            rnd = (int) Math.abs(Math.random() * 52);
78            Card.shuffle(deck, 0, deck.length, rnd);
79        }

80        // Test
81        for (int i = 0; i < deck.length; i++{
82            System.out.println(deck[i]);
83        }

84    }

85}

86
posted on 2011-09-01 17:46 kenzhang 阅读(2736) 评论(2)  编辑  收藏

FeedBack:
# re: java编写扑克的洗牌程序
2011-09-06 10:22 | 好看的电影
正需要用到,拿来试试  回复  更多评论
  
# re: java编写扑克的洗牌程序
2014-05-03 18:59 | zuidaima
可以参考代码:Java 扑克发牌算法实现,下载地址:http://www.zuidaima.com/share/1550463274224640.htm  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: