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

Java模擬實現(xiàn)斗地主的洗牌和發(fā)牌

 更新時間:2022年04月25日 09:45:37   作者:yangruxi  
這篇文章主要為大家詳細介紹了Java模擬實現(xiàn)斗地主的洗牌和發(fā)牌,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

案例分析:

我們需要模擬斗地主過程中的洗牌、發(fā)牌和看牌。而且要求牌是排好序的。

1.每張撲克牌都有花色和點數(shù),所以我們可以先把花色和點數(shù)存進兩個字符串數(shù)組,然后再存進集合里,而因為我們后面涉及到對牌進行洗牌還有排序等等,所以我們選擇TreeMap集合來存儲,鍵是撲克牌的編號,值是撲克牌的花色和點數(shù)(把花色和點數(shù)拼接成一個字符串)。

2.洗牌洗的是編號,我們再用ArrayList集合來存儲牌的編號,調(diào)用Collections集合工具類的shuffle()方法來進行洗牌操作。

3.發(fā)牌,我們發(fā)到每個人手里的牌是排好序的,所以我們選擇TreeSet集合來接收牌。

4.看牌,我們寫個lookPoker()方法就行了,這個方法通過TreeSet集合來獲取每個人牌對應的編號,再去TreeMap集合中的找編號對應的撲克牌。

具體步驟:

1.創(chuàng)建一個TreeMap集合來存儲撲克牌編號和撲克牌花色及點數(shù)
2.定義兩個數(shù)組分別用來存儲花色和點數(shù)
3.創(chuàng)建一個ArrayList集合來存儲編號
4.往HashMap集合中存儲編號以及對應的撲克牌,同時往ArrayList集合中存儲編號
5.洗牌(洗的是編號)
6.發(fā)牌(發(fā)的也是編號,為了保證撲克牌排好序,創(chuàng)建TreeSet集合來接收)
7.看牌(遍歷TreeSet集合,獲取編號,到HashMap集合中找對應的牌)

具體代碼實現(xiàn)如下:

package com.edu_01;

import java.util.ArrayList;
import java.util.Collections;
import java.util.TreeMap;
import java.util.TreeSet;

public class Poker {
? ? public static void main(String[] args) {

? ? ? ? //1.創(chuàng)建一個TreeMap集合來存儲撲克牌編號和撲克牌花色及點數(shù)
? ? ? ? TreeMap<Integer, String> pokers = new TreeMap<Integer,String>();

? ? ? ? //2.定義兩個數(shù)組分別用來存儲花色和點數(shù)
? ? ? ? String[] colors={"?","?","?","?"};
? ? ? ? String[] numbers={"3","4","5","6","7","8","9","10","J","O","K","A","2"};

? ? ? ? //3.創(chuàng)建一個ArrayList集合來存儲編號
? ? ? ? ArrayList<Integer> indexs = new ArrayList<Integer>();

? ? ? ? //4.往HashMap集合中存儲編號以及對應的撲克牌,同時往ArrayList集合中存儲編號
? ? ? ? int index=0;
? ? ? ? for (String number : numbers) {
? ? ? ? ? ? for (String color : colors) {
? ? ? ? ? ? ? ? pokers.put(index,color+number);
? ? ? ? ? ? ? ? indexs.add(index);
? ? ? ? ? ? ? ? index++;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? pokers.put(index,"小王");
? ? ? ? indexs.add(index);
? ? ? ? index++;
? ? ? ? pokers.put(index,"大王");
? ? ? ? indexs.add(index);

? ? ? ? //5.洗牌(洗的是編號)
? ? ? ? Collections.shuffle(indexs);

? ? ? ? //6.發(fā)牌(發(fā)的也是編號,為了保證撲克牌排好序,創(chuàng)建TreeSet集合來接收)
? ? ? ? TreeSet<Integer> zhangsan = new TreeSet<Integer>();
? ? ? ? TreeSet<Integer> lisi = new TreeSet<Integer>();
? ? ? ? TreeSet<Integer> wangwu = new TreeSet<Integer>();
? ? ? ? TreeSet<Integer> dipai = new TreeSet<Integer>();
? ? ? ? for (int i = 0; i < indexs.size(); i++) {
? ? ? ? ? ? if(i>=indexs.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){
? ? ? ? ? ? ? ? wangwu.add(indexs.get(i));
? ? ? ? ? ? }
? ? ? ? }

? ? ? ? //7.看牌(遍歷TreeSet集合,獲取編號,到HashMap集合中找對應的牌)
? ? ? ? lookPoker("張三",zhangsan,pokers);
? ? ? ? lookPoker("李四",lisi,pokers);
? ? ? ? lookPoker("王五",wangwu,pokers);
? ? ? ? lookPoker("底牌",dipai,pokers);
? ? }

? ? private static void lookPoker(String name, TreeSet<Integer> indexs,
? ? ? ? ? ? TreeMap<Integer, String> pokers) {
? ? ? ? System.out.print(name+"的牌為:");
? ? ? ? for (Integer index : indexs) {
? ? ? ? ? ? System.out.print(pokers.get(index)+" ?");
? ? ? ? }
? ? ? ? System.out.println();
? ? }

}

運行結果:

注意:因為我的花色是用了”♥”,”♠”,”♦”,”♣”這這幾個符號,所以保存程序的時候一定要選擇Save as UTF-8,不能選擇OK,否則會出現(xiàn)亂碼。

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

相關文章

  • idea中斷點類型之All和Thread的區(qū)別介紹

    idea中斷點類型之All和Thread的區(qū)別介紹

    使用all模式對于程序中含有多個線程來說,會將多個線程都阻塞在斷點,此時所有的線程都執(zhí)行到此處,在最后一個線程執(zhí)行到此處是會發(fā)生暫停,在這之前的線程會繼續(xù)執(zhí)行到任意位置,本文給大家詳細介紹下idea中斷點類型之All和Thread的區(qū)別,感興趣的朋友一起看看吧
    2022-03-03
  • Java防止非法盜鏈的幾種解決方案

    Java防止非法盜鏈的幾種解決方案

    防止別人通過一些技術手段盜用本站的資源,本文主要介紹了Java防止非法盜鏈的幾種解決方案,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • MyBatis使用Map與模糊查詢的方法示例

    MyBatis使用Map與模糊查詢的方法示例

    這篇文章主要給大家介紹了關于MyBatis使用Map與模糊查詢的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • 解讀@EventListener工作原理

    解讀@EventListener工作原理

    這篇文章主要介紹了@EventListener工作原理,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java多線程 兩階段終止模式Two-Phase Termination Patter

    Java多線程 兩階段終止模式Two-Phase Termination Patter

    這篇文章主要介紹了Java多線程 兩階段終止模式Two-Phase Termination Patter,該模式有兩個角色,分別是Terminator,終止者,負責接收終止請求,執(zhí)行終止處理,處理完成后再終止自己。TerminationRequester終止請求發(fā)出者,用來向Terminator發(fā)出終止請求,需要的朋友可以參考一下
    2021-10-10
  • springboot+mybatis-plus+oracle實現(xiàn)邏輯刪除

    springboot+mybatis-plus+oracle實現(xiàn)邏輯刪除

    最近在做一個前后端分離的小項目,需要刪除用戶表的用戶,本文主要實現(xiàn)了springboot+mybatis-plus+oracle邏輯刪除,具有一定的參考價值,感興趣的可以了解一下
    2021-08-08
  • IDEA?2020.3最新永久激活碼(免費激活到?2099?年,親測有效)

    IDEA?2020.3最新永久激活碼(免費激活到?2099?年,親測有效)

    分享一下?IntelliJ?IDEA?2020.3.1?最新激活注冊碼,破解教程如下,可免費激活至?2099?年,親測有效,本文給大家分享兩種方法,感興趣的朋友參考下吧
    2021-01-01
  • 使用maven的profile構建不同環(huán)境配置的方法

    使用maven的profile構建不同環(huán)境配置的方法

    這篇文章主要介紹了使用maven的profile構建不同環(huán)境配置的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • java正則表達式判斷強密碼和隨機生成強密碼代碼示例

    java正則表達式判斷強密碼和隨機生成強密碼代碼示例

    這篇文章主要給大家介紹了關于java正則表達式判斷強密碼和隨機生成強密碼的相關資料,最近需要一個密碼強度正則表達式在用戶注冊時校驗用戶密碼強度,需要的朋友可以參考下
    2023-08-08
  • Java使用Preference類保存上一次記錄的方法

    Java使用Preference類保存上一次記錄的方法

    這篇文章主要介紹了Java使用Preference類保存上一次記錄的方法,較為詳細的分析了Preference類的使用技巧,需要的朋友可以參考下
    2015-05-05

最新評論

奈曼旗| 河北省| 浦东新区| 沾化县| 喀什市| 房山区| 汾阳市| 纳雍县| 宁安市| 宜兰县| 阿坝| 大化| 芮城县| 威远县| 永春县| 弥渡县| 凤翔县| 怀集县| 织金县| 芦山县| 阿瓦提县| 长春市| 常熟市| 泰顺县| 潮安县| 文水县| 怀仁县| 威宁| 含山县| 襄垣县| 磴口县| 伊吾县| 巴彦淖尔市| 天气| 宽甸| 喀喇沁旗| 南康市| 明星| 乌兰县| 方山县| 沿河|