Java程序設計之撲克牌


  這段代碼的主要實現功能撲克牌的洗牌和發牌功能,一副牌,紅桃,黑桃,梅花,方片,A~K,不含大小王。

  構造一個class。

  首先是聲明花色:

private String[] sign={"方片","紅桃","黑桃","梅花"};//撲克的四種花色

  然后是洗牌功能,意味花色與A~K結合構造成順序的52張撲克牌,構造一個ArrayList對象存儲撲克牌的值。

private static ArrayList<String> List;

  接下來再類中實現此方法,構造出一副撲克牌。

public void Init(){
        List = new ArrayList();
        for(String str:sign){
            for(int i = 1;i<=13;i++){
                String extra_sign = ""; //將數字與撲克匹配
                if(i == 1){
                    extra_sign = "A";
                    List.add(str+extra_sign);
                }else if(i == 11){
                    extra_sign = "J";
                    List.add(str+extra_sign);
                }else if(i == 12){
                    extra_sign = "Q";
                    List.add(str+extra_sign);
                }else if(i == 13){
                    extra_sign = "K";
                    List.add(str+extra_sign);
                }else{
                    List.add(str+i);
                }
            }
        }
    }

  此時衣服撲克牌已經構造完成,接下來通過方法實現撲克牌的亂序發放到四人的手中。

public void Hands(){ 
        int i = 0,j=0;
        Collections.shuffle(List);//Collection類中的shuffle方法將<List>亂序排列
        for(String str:List){
            if(j == 4)
                break;
            if(i == 0){
                hands[j] = str+" ";
                i++;
            }
                        //這里不使用for(i<13){
            //    hands[j] = str+" ";
            //    i++;
            //}是因為第一個下標為0的元素為null,所以多了一步判斷
            if(0<i && i<13){
                hands[j] +=str+" " ; 
                i++;
            }else{
                i = 0;
                j++;
            }
        }
    }

  洗牌和分牌步驟已經完成,下面貼上完整代碼:

  

package com;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;

public class Pokes {
    
    private String[] sign={"方片","紅桃","黑桃","梅花"};
    private static String[] hands = new String[4];
    private static ArrayList<String> List;
    
    Pokes(){
    }
    
    public void Init(){
        List = new ArrayList();
        for(String str:sign){
            for(int i = 1;i<=13;i++){
                String extra_sign = "";
                if(i == 1){
                    extra_sign = "A";
                    List.add(str+extra_sign);
                }else if(i == 11){
                    extra_sign = "J";
                    List.add(str+extra_sign);
                }else if(i == 12){
                    extra_sign = "Q";
                    List.add(str+extra_sign);
                }else if(i == 13){
                    extra_sign = "K";
                    List.add(str+extra_sign);
                }else{
                    List.add(str+i);
                }
            }
        }
    }
    
    public void Hands(){
        int i = 0,j=0;
        Collections.shuffle(List);
        for(String str:List){
            if(j == 4)
                break;
            if(i == 0){
                hands[j] = str+" ";
                i++;
            }
            if(0<i && i<13){
                hands[j] +=str+" " ; 
                i++;
            }else{
                i = 0;
                j++;
            }
        }
    }

    public static void main(String[] args) {
        Pokes p = new Pokes();
        p.Init();
        p.Hands();
            System.out.println(hands[0]);
            System.out.println(hands[1]);
            System.out.println(hands[2]);
            System.out.println(hands[3]);

    }

}

通過debug結果如下:

第一次輸出結果:
黑桃2 黑桃2 紅桃A 紅桃8 黑桃9 黑桃7 梅花4 梅花8 黑桃5 梅花3 紅桃10 方片Q 方片K 
黑桃6 黑桃6 方片8 紅桃4 紅桃7 黑桃3 梅花K 紅桃J 黑桃J 梅花2 梅花10 紅桃Q 方片9 
方片A 方片A 梅花Q 黑桃8 梅花J 紅桃3 方片3 紅桃6 紅桃2 方片7 梅花9 紅桃5 梅花5 
方片6 方片6 梅花A 紅桃K 黑桃K 方片10 黑桃A 梅花7 方片J 梅花6 方片5 黑桃10 紅桃9 
第二次輸出結果:
黑桃10 黑桃10 紅桃5 黑桃7 方片3 方片Q 紅桃8 方片6 梅花5 方片9 方片2 紅桃Q 紅桃9 
黑桃5 黑桃5 黑桃2 紅桃2 黑桃K 梅花8 梅花2 黑桃9 紅桃7 黑桃8 紅桃6 梅花9 黑桃6 
紅桃10 紅桃10 梅花3 黑桃A 梅花10 方片7 方片10 黑桃4 黑桃Q 梅花7 紅桃K 黑桃3 紅桃3 
梅花6 梅花6 梅花A 梅花K 紅桃A 梅花J 方片8 紅桃J 黑桃J 方片4 方片A 紅桃4 方片5 

  簡單的Java撲克牌程序,初始化構造一副撲克牌,利用Collection.shuffle(<List>)將List中的元素打亂順序,依次分配給四個String[]。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM