一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java實現撲克牌程序

Java實現撲克牌程序

2022-02-21 14:25dhdhdhdhg Java教程

這篇文章主要為大家詳細介紹了Java實現撲克牌程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Java實現撲克牌程序的具體代碼,供大家參考,具體內容如下

思路:

在實現之前,先要想好步驟,思路清晰才不會出錯。
要實現一副撲克牌,首先要創建這個類,然后有一副撲克牌,之后進行洗牌,抓牌。

1.定義一個Card類

2.實現這個游戲:

①構造一副撲克牌(52張)這里不包含大小王
②洗牌
③三個人每個人抓五張牌

代碼實現及其細節:

1.定義一個Card類

一張牌中包括兩個屬性:花色和牌面值

?
1
2
3
4
5
6
7
8
9
10
11
12
public class MyCard {
    public char suit;   //花色
    public String rank; //牌面值
 
    public MyCard(String rank, char suit) {
        this.suit = suit;
        this.rank = rank;
    }
    public String toString(){
        return String.format("[%s %c]",rank,suit);
    }
}

2.實現這個游戲

寫一個CardGame來實現這個撲克牌游戲,其中分為很多細小的分支。

1.買一副牌

前面寫了Card來表示一張牌,這里我們買一副牌,就是52個Card放在一起,就組成一個List,所以這里一副牌的類型為List<Card>。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public List<MyCard> buyDeck(){
        //首先將花色和牌面值陳列出來
        //因為牌面值有A,J,Q,K,這里采用的是字符串數組
        //也可以將A,J,Q,K單獨處理,剩下的寫作一個整型數組
        char[] suits={'♦','♥','♠','♣'};
        String[] ranks={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
        //創建52張牌
        List<MyCard> deck=new ArrayList<>(52);
        for(int i=0;i<4;i++){
            for(int j=0;j<13;j++){
                deck.add(new MyCard(ranks[j],suits[i]));
            }
        }
        return deck;
    }

2.洗牌:

使用隨機數

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//寫一個交換函數方便洗牌方法實現
public void swap(List<MyCard> deck,int i,int j){
        MyCard temp=deck.get(i);
        deck.set(i,deck.get(j));
        deck.set(j,temp);
    }
 
    public void shuffle(List<MyCard> deck){
        //設置隨機數
        Random r=new Random();//實例化一個Random類
        for(int j=deck.size()-1;j>0;j--){
            int i=r.nextInt(j);   //隨機產生一個大于等于0小于51的整數
            swap(deck,i,j);       //將生成的0-51的隨機數與與最后一個數交換實現洗牌
        }
    }

3.主函數:

在這里實現發牌,每人五張牌,三個人輪流抓,將三個人放在一個List當中,三個人中的牌信息為List<Card>,所以hands的類型為List<List<Card>>.

?
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
public static void main(String[] args){
        CardGame cg=new CardGame();
        List<MyCard> deck=cg.buyDeck();
        System.out.println("剛買回來的牌:");
        System.out.println(deck);
        cg.shuffle(deck);
        System.out.println("洗完的牌:");
        System.out.println(deck);
        //三人輪流抓牌,一人抓五張
        //將三個玩家放到一個List當中
        List<List<MyCard>> hands=new ArrayList<>(3);
        //三個人手中每個人五張牌
        hands.add(new ArrayList<>(5));
        hands.add(new ArrayList<>(5));
        hands.add(new ArrayList<>(5));
        //ABC三個人抓牌
        for(int i=0;i<5;i++){
            for(int j=0;j<3;j++){
                //從deck里面抓走的
                //抓的時候把最頂上的抓走
                hands.get(j).add(deck.remove(0));;
            }
        }
        System.out.println("剩下的牌:");
        System.out.println("A手中的牌:");
        System.out.println(hands.get(0));
        System.out.println("B手中的牌:");
        System.out.println(hands.get(1));
        System.out.println("C手中的牌:");
        System.out.println(hands.get(2));
    }

輸出結果:

后面的沒顯示全

Java實現撲克牌程序

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/m0_51405559/article/details/120808011

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: bl超h 高h 污肉快穿np | 亚洲XXX午休国产熟女屁 | 無码一区中文字幕少妇熟女H | 太大了轻点阿受不了小说h 四色6677最新永久网站 | 五月桃花网婷婷亚洲综合 | 小sao货水好多真紧h的视频 | 久久噜国产精品拍拍拍拍 | 亚洲丰满女人ass硕大 | 全黄h全肉细节修仙玄幻文 全彩调教侵犯h本子全彩妖气he | 青青在线视频观看 | 亚洲国产精久久久久久久 | 免费看成年视频网页 | 亚洲国产天堂综合一区 | 亚洲无毛片 | 99热线| 日本高清va不卡视频在线观看 | 暗卫调教女主肉高h | 青青草国产精品 | 白丝捆绑vk | 精久久 | 国产精品视频久久久久 | 久久视频这只精品99re6 | julia ann黑人巨大 | 亚洲视频999| 91禁漫| 视频在线观看高清免费看 | 成人免费观看在线视频 | 亚洲人成在线播放 | 高清视频一区二区三区 | 国产 日韩 一区 | 色哟哟国产成人精品 | 97超pen个人视频公开视频视 | 好大好湿好硬好爽好深免费视频 | 国产综合图区 | 久久久WWW免费人成精品 | 日本理论片中文在线观看2828 | 国产精品久久国产精品99盘 | www一区二区| 日韩精品欧美高清区 | 97影院手机版 | 99精品国产在现线免费 |