扑克 洗牌

public class Poker {  
    public static void main(String[] args) {  
        Poker poker = new Poker();  
        poker.shuffle();                // 洗牌  
        Poker.Card c1 = poker.deal(0);  // 发第一张牌  
        // 对于非静态内部类Card  
        // 只有通过其外部类Poker对象才能创建Card对象  
        Poker.Card c2 = poker.new Card("红心", 1);    // 自己创建一张牌  
  
        System.out.println(c1);     // 洗牌后的第一张  
        System.out.println(c2);     // 打印: 红心A  
    }  
    private static String[] suites = {"黑桃", "红桃", "草花", "方块"};  
    private static int[] faces = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};  
  
    private Card[] cards;  
  
    /** 
     * 构造器 
     * 
     */  
    public Poker() {  
        cards = new Card[52];  
        for(int i = 0; i < suites.length; i++) {  
            for(int j = 0; j < faces.length; j++) {  
                cards[i * 13 + j] = new Card(suites[i], faces[j]);  
            }  
        }  
    }  
  
    /** 
     * 洗牌 (随机乱序) 
     * 
     */  
    public void shuffle() {  
        for(int i = 0, len = cards.length; i < len; i++) {  
            int index = (int) (Math.random() * len);  
            Card temp = cards[index];  
            cards[index] = cards[i];  
            cards[i] = temp;  
        }  
    }  
  
    /** 
     * 发牌 
     * @param index 发牌的位置 
     * 
     */  
    public Card deal(int index) {  
        return cards[index];  
    }  
  
    /** 
     * 卡片类(一张扑克) 
     * [内部类] 
     * @author 骆昊 
     * 
     */  
    public class Card {  
        private String suite;   // 花色  
        private int face;       // 点数  
  
        public Card(String suite, int face) {  
            this.suite = suite;  
            this.face = face;  
        }  
  
        @Override  
        public String toString() {  
            String faceStr = "";  
            switch(face) {  
                case 1: faceStr = "A"; break;  
                case 11: faceStr = "J"; break;  
                case 12: faceStr = "Q"; break;  
                case 13: faceStr = "K"; break;  
                default: faceStr = String.valueOf(face);  
            }  
            return suite + faceStr;  
        }  
    }  
}  

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值