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

java集合模擬實(shí)現(xiàn)斗地主洗牌和發(fā)牌

 更新時(shí)間:2021年09月26日 16:04:16   作者:upupxi  
這篇文章主要為大家詳細(xì)介紹了java集合模擬實(shí)現(xiàn)斗地主洗牌和發(fā)牌,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java實(shí)現(xiàn)斗地主洗牌和發(fā)牌的具體代碼,供大家參考,具體內(nèi)容如下

1:用ArrayList集合實(shí)現(xiàn)

案例分析:

我們現(xiàn)在要做的是模擬斗地主小游戲來進(jìn)行洗牌和發(fā)牌。

具體步驟:

A:首先,創(chuàng)建一個(gè)ArrayList集合來存儲(chǔ)牌,將牌的花色和點(diǎn)數(shù)存儲(chǔ)在倆個(gè)字符串?dāng)?shù)組中中,然后用for循環(huán)加強(qiáng)遍歷將每張牌的花色點(diǎn)數(shù)及大王小王存儲(chǔ)在集合中。
B:進(jìn)行洗牌,調(diào)用collectionas的shuffle方法。
C:進(jìn)行發(fā)牌,創(chuàng)建四個(gè)ArrayList集合,分別用來存儲(chǔ)玩家一,玩家二,玩家三,和底牌對(duì)應(yīng)發(fā)到手上的牌。然后用for循環(huán)遍歷這幅撲克牌用If語句判斷,然后發(fā)牌。
D:創(chuàng)建一個(gè)看牌的方法,調(diào)用即可。

具體代碼:

package com.study_01;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/*
 * 模擬斗地主洗牌和發(fā)牌
 * 分析步驟:
 * 1:創(chuàng)建一個(gè)集合來存儲(chǔ)牌
 * 2:洗牌
 * 3:發(fā)牌
 * 4:看牌
 * 
 */
public class Poker1 {
    public static void main(String[] args) {
        //創(chuàng)建一個(gè)集合來存牌
        ArrayList <String> Pokers=new ArrayList<>();
        String[] colors={"♠","♥","♦","♣"};
        String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        for(String color:colors){
            for(String number:numbers){
                Pokers.add(color+number);   
            }
            Pokers.add("大王");
            Pokers.add("小王");
        }//洗牌
        Collections.shuffle(Pokers);
        //發(fā)牌
        /*創(chuàng)建四個(gè)集合來存儲(chǔ)
         * 1:張三
         * 2:李四
         * 3:王麻
         * 4:底牌
         */
        ArrayList<String> Zhangsan=new ArrayList<>();
        ArrayList<String> Lisi=new ArrayList<>();
        ArrayList<String> Wangma=new ArrayList<>();
        ArrayList<String> Dipai=new ArrayList<>();
        for(int i=0;i<Pokers.size();i++){
            if(i>=Pokers.size()-3){
                Dipai.add(Pokers.get(i));
            }else if(i%3==0){
                Zhangsan.add(Pokers.get(i));
            }else if(i%3==1){
                Lisi.add(Pokers.get(i));
            }else if(i%3==2){
                Wangma.add(Pokers.get(i));
            }
        }//看牌
        lookPokers("張三",Zhangsan);
        lookPokers("李四",Lisi);
        lookPokers("王麻",Wangma);
        lookPokers("底牌",Dipai);     
    }
    private static void lookPokers(String name, ArrayList<String> Pokers){
        System.out.println(name+"的牌是:");
        for(String poker:Pokers){
            System.out.print(poker+" ");
        }System.out.println();  
    }
    }

運(yùn)行結(jié)果:

2:用TreeMap集合實(shí)現(xiàn)

具體步驟:

A:創(chuàng)建TreeMap集合存儲(chǔ)牌,并且大的鍵對(duì)應(yīng)大的牌,小的鍵對(duì)應(yīng)小的牌,同上創(chuàng)建倆個(gè)數(shù)組,一個(gè)用來存儲(chǔ)花色,一個(gè)用來存儲(chǔ)點(diǎn)數(shù),另外創(chuàng)建一個(gè)ArrayList集合,用來存儲(chǔ)沒有任意一張牌對(duì)應(yīng)的索引。
B:.洗牌,洗的是索引(map集合中每一張牌對(duì)應(yīng)的鍵),我們這里用的是ArrayList來存儲(chǔ)。
C:發(fā)牌,發(fā)的索引,并且對(duì)這個(gè)索引進(jìn)行排序,這是利用了TreeSet的有序性。
D:看牌,根據(jù)發(fā)到的索引去map集合中找出對(duì)應(yīng)的值。

具體代碼:

package com.study_01;
import java.util.ArrayList;
import java.util.Collections;
import java.util.TreeMap;
import java.util.TreeSet;
/**
 * 1.創(chuàng)建Map集合存儲(chǔ)牌,并且大的鍵對(duì)應(yīng)大的牌,小的鍵對(duì)應(yīng)小的牌
 * 2.洗牌,洗的是索引(map集合中每一張牌對(duì)應(yīng)的鍵)
 * 3.發(fā)牌,發(fā)的索引,并且歲這個(gè)索引進(jìn)行排序
 * 4.看牌,根據(jù)發(fā)到的鍵去map集合中找出對(duì)應(yīng)的值
 */
public class Poker2 {
    public static void main(String[] args) {
        //創(chuàng)建一個(gè)TreeMap集合
        TreeMap<Integer,String> Pokers=new TreeMap<>();
        String[] colors={"♥","♠","♦","♣"};
        String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2",};
        //創(chuàng)建一個(gè)ArrayList集合,用來存儲(chǔ)沒有一張牌對(duì)應(yīng)的索引
        ArrayList<Integer> indexs=new ArrayList<>();
        int index = 0;
        for(String color:colors){
            for(String number:numbers){
                Pokers.put(index, color+number);
                indexs.add(index);
                index++;    
            }//存大王,小王
            Pokers.put(index, "大王");
            indexs.add(index);
            index++;
            Pokers.put(index, "小王");
            indexs.add(index);
            index++;
        }//洗牌,洗的是索引(map集合中每一張牌對(duì)應(yīng)的鍵)
        Collections.shuffle(indexs);
        //發(fā)牌,發(fā)的是索引根據(jù)索引來找它對(duì)應(yīng)的值
        TreeSet<Integer> zhangsan=new TreeSet<>();
        TreeSet<Integer> lisi=new TreeSet<>();
        TreeSet<Integer> wangma=new TreeSet<>();
        TreeSet<Integer> dipai=new  TreeSet<>();
        for(int i=0;i<Pokers.size();i++){
            if(i>=Pokers.size()-3){
                dipai.add(indexs.get(i));
            }else if(i%3==0){
                zhangsan.add(indexs.get(i));
            }else if(i%3==1){
                lisi.add(indexs.get(i));
            }else if(i%3==2){
                wangma.add(indexs.get(i));
            }
        }//看牌
        lookPoker("張三",zhangsan,Pokers);
        lookPoker("李四",lisi,Pokers);
        lookPoker("王麻",wangma,Pokers);
        lookPoker("底牌",dipai,Pokers);   
    }
    private static void lookPoker(String name, TreeSet<Integer> indexs,
            TreeMap<Integer, String> Pokers) {
        System.out.println(name+"的牌是:");
        for(Integer index:indexs){
            System.out.print(Pokers.get(index));
        }System.out.println();
    }
}

運(yùn)行結(jié)果:

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

相關(guān)文章

  • Java File類的詳解及簡單實(shí)例

    Java File類的詳解及簡單實(shí)例

    這篇文章主要介紹了Java File類的詳解及簡單實(shí)例的相關(guān)資料,希望通過本文大家能夠掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-09-09
  • springBoot跨域注解@CrossOrigin用法

    springBoot跨域注解@CrossOrigin用法

    SpringFramework 4.2GA為CORS提供了支持,Spring MVC版本必須在4.2或以上才能使用@CrossOrigin注解,如果在Controller中使用@CrossOrigin后仍遇到跨域問題,可能是因?yàn)锧RequestMapping中未指定HTTP方法,指定具體的Get或Post方法后,可以解決這一問題
    2024-10-10
  • netty中pipeline異常事件分析

    netty中pipeline異常事件分析

    這篇文章主要為大家介紹了netty中pipeline異常事件分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • MyBatis-Plus詳解(環(huán)境搭建、關(guān)聯(lián)操作)

    MyBatis-Plus詳解(環(huán)境搭建、關(guān)聯(lián)操作)

    MyBatis-Plus 是一個(gè) MyBatis 的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生,今天通過本文給大家介紹MyBatis-Plus環(huán)境搭建及關(guān)聯(lián)操作,需要的朋友參考下吧
    2022-09-09
  • iReport簡單使用方法圖文教程

    iReport簡單使用方法圖文教程

    iReport是一個(gè)能夠創(chuàng)建復(fù)雜報(bào)表的開源項(xiàng)目,它100%使用Java語言編寫,是目前全球最為流行的開源報(bào)表設(shè)計(jì)器,由于它豐富的圖形界面,你能夠很快的創(chuàng)建出任何一種你想要的報(bào)表
    2021-10-10
  • Java equals()方法使用詳解及總結(jié)

    Java equals()方法使用詳解及總結(jié)

    這篇文章主要介紹了Java equals()方法使用詳解及總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Java編程實(shí)現(xiàn)逆波蘭表達(dá)式代碼示例

    Java編程實(shí)現(xiàn)逆波蘭表達(dá)式代碼示例

    本文主要對(duì)Java算法逆波蘭表達(dá)式的相關(guān)內(nèi)容作了介紹,涉及逆波蘭表達(dá)式的定義已經(jīng)在Java中的實(shí)現(xiàn),具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • Java8的Optional如何干掉空指針(示例詳解)

    Java8的Optional如何干掉空指針(示例詳解)

    這篇文章主要介紹了Java8的Optional如何干掉空指針,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 詳解利用Spring加載Properties配置文件

    詳解利用Spring加載Properties配置文件

    本篇文章主要介紹了詳解利用Spring加載Properties配置文件,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04

最新評(píng)論

湖口县| 新疆| 抚顺县| 县级市| 江西省| 资中县| 和田市| 呼玛县| 桐庐县| 余干县| 眉山市| 泰州市| 嘉祥县| 上饶市| 栾川县| 龙山县| 六安市| 泗水县| 望都县| 三江| 通渭县| 江孜县| 西盟| 额尔古纳市| 清新县| 淄博市| 城固县| 浠水县| 西吉县| 铜梁县| 泰和县| 如皋市| 呼图壁县| 山东省| 湖口县| 山丹县| 兖州市| 山阳县| 贵溪市| 永福县| 蓝田县|