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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品一区二区三区免费 | 欧美又硬又粗又长又大 | 成人在线观看免费视频 | 湿好紧太硬了我太爽了 | 欧美女人p| 好爽轻点太大了太深了 | 国内小情侣一二三区在线视频 | 无码人妻少妇色欲AV一区二区 | 大肥臀风间由美 中文字幕 大东北chinesexxxx露脸 | 日韩理论片在线看免费观看 | 99re精品在线| 1024亚洲天堂 | 国内小情侣一二三区在线视频 | 国自产精品手机在线视频 | 久久久精品免费视频 | 妹妹骑上来蹭着蹭着就射了 | 精新精新国产自在现拍 | 国产目拍亚洲精品一区二区三区 | 国产美女下面流出白浆视频 | yy6080欧美三级理论 | 嫩草蜜桃 | 成人免费毛片一区二区三区 | 日本护士撒尿xxxx欧美 | 四虎永久网址影院 | 免费视频观看 | 九九精品免费视频 | 亚洲品质自拍视频 | 国产不卡视频 | 精品国产日韩亚洲一区在线 | 国产精品视频一区二区三区w | 青草青草伊人精品视频 | 欧美xxoo黑人又粗暴 | 国产在线观看人成激情视频 | 午夜精品久久久久久久99蜜桃i | 99亚洲| 大桥未久midd—962在线 | 美女张开腿让男人桶的 视频 | 精品国产爱久久 | 国产亚洲人成网站在线观看不卡 | 色噜噜国产精品视频一区二区 | 俄罗斯一级淫片bbbb |