最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)撲克牌程序

 更新時間:2021年10月18日 08:53:34   作者:dhdhdhdhg  
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)撲克牌程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Java實(shí)現(xiàn)撲克牌程序的具體代碼,供大家參考,具體內(nèi)容如下

思路:

在實(shí)現(xiàn)之前,先要想好步驟,思路清晰才不會出錯。
要實(shí)現(xiàn)一副撲克牌,首先要創(chuàng)建這個類,然后有一副撲克牌,之后進(jìn)行洗牌,抓牌。

1.定義一個Card類

2.實(shí)現(xiàn)這個游戲:

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

代碼實(shí)現(xiàn)及其細(xì)節(jié):

1.定義一個Card類

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

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.實(shí)現(xiàn)這個游戲

寫一個CardGame來實(shí)現(xiàn)這個撲克牌游戲,其中分為很多細(xì)小的分支。

1.買一副牌

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

public List<MyCard> buyDeck(){
        //首先將花色和牌面值陳列出來
        //因?yàn)榕泼嬷涤蠥,J,Q,K,這里采用的是字符串?dāng)?shù)組
        //也可以將A,J,Q,K單獨(dú)處理,剩下的寫作一個整型數(shù)組
        char[] suits={'♦','♥','♠','♣'};
        String[] ranks={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
        //創(chuàng)建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.洗牌:

使用隨機(jī)數(shù)

//寫一個交換函數(shù)方便洗牌方法實(shí)現(xiàn)
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){
        //設(shè)置隨機(jī)數(shù)
        Random r=new Random();//實(shí)例化一個Random類
        for(int j=deck.size()-1;j>0;j--){
            int i=r.nextInt(j);   //隨機(jī)產(chǎn)生一個大于等于0小于51的整數(shù)
            swap(deck,i,j);       //將生成的0-51的隨機(jī)數(shù)與與最后一個數(shù)交換實(shí)現(xiàn)洗牌
        }
    }

3.主函數(shù):

在這里實(shí)現(xiàn)發(fā)牌,每人五張牌,三個人輪流抓,將三個人放在一個List當(dāng)中,三個人中的牌信息為List<Card>,所以hands的類型為List<List<Card>>.

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當(dāng)中
        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));
    }

輸出結(jié)果:

后面的沒顯示全

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot 請求參數(shù)忽略大小寫的實(shí)例

    SpringBoot 請求參數(shù)忽略大小寫的實(shí)例

    這篇文章主要介紹了SpringBoot 請求參數(shù)忽略大小寫的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Java跨域問題的處理詳解

    Java跨域問題的處理詳解

    這篇文章主要給大家介紹了關(guān)于Java跨域問題處理的相關(guān)資料,文中介紹的非常詳細(xì),相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • JAVA開發(fā)環(huán)境搭建教程

    JAVA開發(fā)環(huán)境搭建教程

    這篇文章主要為大家詳細(xì)介紹了JAVA開發(fā)環(huán)境搭建教程,配置JAVA開發(fā)環(huán)境,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Apache commons fileupload文件上傳實(shí)例講解

    Apache commons fileupload文件上傳實(shí)例講解

    這篇文章主要為大家詳細(xì)介紹了Apache commons fileupload文件上傳實(shí)例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • SpringBoot深入分析講解監(jiān)聽器模式上

    SpringBoot深入分析講解監(jiān)聽器模式上

    監(jiān)聽器模式,大家應(yīng)該并不陌生,主要的組成要素包括了事件、監(jiān)聽器以及廣播器;當(dāng)事件發(fā)生時,廣播器負(fù)責(zé)將事件傳遞給所有已知的監(jiān)聽器,而監(jiān)聽器會對自己感興趣的事件進(jìn)行處理
    2022-07-07
  • springcloud 服務(wù)降級的實(shí)現(xiàn)方法

    springcloud 服務(wù)降級的實(shí)現(xiàn)方法

    這篇文章主要介紹了springcloud 服務(wù)降級的實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • springboot?maven?plugin報紅的解決辦法

    springboot?maven?plugin報紅的解決辦法

    本文主要介紹了springboot?maven?plugin報紅的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 如何基于JavaFX開發(fā)桌面程序

    如何基于JavaFX開發(fā)桌面程序

    這篇文章主要介紹了如何基于JavaFX開發(fā)桌面程序,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • java中注解的原理解析

    java中注解的原理解析

    這篇文章主要介紹了java中注解的原理解析,java 注解又稱 Java 標(biāo)注,是 JDK5.0 引入的一種注釋機(jī)制,可以理解為為某個東西,打個標(biāo)記的記號,等要使用這個注解時,可以通過反射獲取標(biāo)注里面的內(nèi)容,需要的朋友可以參考下
    2023-10-10
  • SpringBoot框架實(shí)現(xiàn)支付和轉(zhuǎn)賬功能

    SpringBoot框架實(shí)現(xiàn)支付和轉(zhuǎn)賬功能

    在 Spring Boot 框架中實(shí)現(xiàn)支付和轉(zhuǎn)賬功能時,涉及到多個細(xì)節(jié)和注意點(diǎn),這些功能通常需要高度的安全性、穩(wěn)定性和可擴(kuò)展性,本文介紹了實(shí)現(xiàn)支付和轉(zhuǎn)賬功能的一些關(guān)鍵點(diǎn),需要的朋友可以參考下
    2024-08-08

最新評論

合江县| 托克逊县| 湾仔区| 玉田县| 肇源县| 琼结县| 阿克苏市| 长春市| 鄢陵县| 湘潭县| 吴忠市| 祥云县| 华蓥市| 商城县| 鄢陵县| 五大连池市| 璧山县| 武城县| 兴安盟| 大兴区| 平安县| 佛山市| 焦作市| 巨鹿县| 和硕县| 宝丰县| 常德市| 汪清县| 武宣县| 阜阳市| 洛南县| 宁都县| 修文县| 黎川县| 石泉县| 盘锦市| 光山县| 长顺县| 迁西县| 海城市| 奉新县|