亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java實(shí)現(xiàn)撲克牌分發(fā)功能

 更新時(shí)間:2020年05月20日 09:16:19   作者:PowerAlan  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)撲克牌分發(fā),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

實(shí)現(xiàn)一個(gè)三人斗地主的撲克牌分發(fā)功能

思路:

1、準(zhǔn)備一組54張的撲克牌
2、洗牌
3、將撲克牌分發(fā)到玩家手中
4、查看每個(gè)選手中的撲克牌和地主的底牌

思路補(bǔ)充:先創(chuàng)建兩個(gè)花色和數(shù)字的數(shù)組,再創(chuàng)建一個(gè)List集合,和Map集合,運(yùn)用雙層for循環(huán)將花色和數(shù)字依次組合成52張撲克牌,之后分別在加添加進(jìn)Map集合中的value值中,Map中的key值依次用0-51表示,雙層for循環(huán)的同時(shí)將0-51的值依次賦值給List集合中,循環(huán)結(jié)束后在依次將大王、小王加入Map集合中的value中相對(duì)應(yīng)的key值用52和53表示,還要講52和53賦值到List集合中,此時(shí)所有牌組準(zhǔn)備完畢。
分別創(chuàng)建四個(gè)新List集合,將存放序號(hào)的List集合中的序號(hào)打亂后分發(fā)到玩家手中,最后留三張底牌,添加到他們對(duì)應(yīng)的List集合中
分別將三位玩家和底牌中的序號(hào)集合遍歷,遍歷出的數(shù)值帶入到Map中的get方法的key值中,得到相對(duì)應(yīng)得value值(也就是對(duì)應(yīng)的牌),再將value值賦值給玩家手中對(duì)應(yīng)的序號(hào)值處。
最后將三位玩家和底牌所對(duì)應(yīng)的List集合輸出打印出來(lái)即可看到他們被分到的牌。

具體代碼如下:

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

public class TestPokerPlus {

 public static void main(String[] args) {
  //1.創(chuàng)建撲克牌集合
  //創(chuàng)建map集合,類(lèi)似于字典 和 list序號(hào)集合
  List list = new ArrayList();
  HashMap<Integer,String> map = new HashMap<Integer,String>();
  //將花色和數(shù)字及JQK組合添加進(jìn)撲克牌集合map中
  String[] color = {"♥","♦","♠","♣"};
  String[] number = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
  int num = 0;//計(jì)數(shù)器思想
  for(int i = 0 ;i< number.length;i++){
   for(int j = 0 ;j< color.length;j++){
    map.put(num,color[j]+number[i]);
    list.add(num);
    num++;
   }
  }
  //將序號(hào)集合中加入52,53兩位序列,為之后map集合中加入“大王”、“小王”做準(zhǔn)備
  list.add(list.size());
  list.add(list.size());
  //在加上大王、小王兩張牌
  map.put(list.size()-2,"小王");
  map.put(list.size()-1,"大王");

  //2.打亂
  //將序號(hào)集合打亂
  Collections.shuffle(list);

  //3.分牌
  //創(chuàng)建三名玩家和底牌集合
  List player1 = new ArrayList();
  List player2 = new ArrayList();
  List player3 = new ArrayList();
  List cards = new ArrayList();
  //循環(huán)分發(fā)序號(hào)
  for(int i = 0 ;i<list.size();i++){
   if(i<list.size()-3){
    if(i % 3 == 1){
     player1.add(list.get(i));
    }else if(i % 3 == 2){
     player2.add(list.get(i));
    }else{
     player3.add(list.get(i));
    }
   }else{
    cards.add(list.get(i));
   }
  }
  //將分的的序號(hào)升序排列
  Collections.sort(player1);
  Collections.sort(player2);
  Collections.sort(player3);
  Collections.sort(cards);
  //遍歷將3個(gè)玩家和底牌分得的序號(hào)集合 對(duì)照map集合重新將對(duì)應(yīng)的牌賦值給對(duì)應(yīng)的序號(hào)
  boardAssignment(map, player1);
  boardAssignment(map, player2);
  boardAssignment(map, player3);
  boardAssignment(map, cards);

  //4.看牌
  //打印輸出三名玩家的牌的底牌
  System.out.println(player1);
  System.out.println(player2);
  System.out.println(player3);
  System.out.println(cards);
 }

 private static void boardAssignment(HashMap<Integer, String> map,List list) {
  for(int i = 0;i < list.size();i++){
   list.set(i, map.get(list.get(i)));
  }
 }
}

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

相關(guān)文章

  • Java獲取Linux服務(wù)器CPU、內(nèi)存、磁盤(pán)信息的示例詳解

    Java獲取Linux服務(wù)器CPU、內(nèi)存、磁盤(pán)信息的示例詳解

    本文介紹了使用Java內(nèi)置API、第三方庫(kù)OSHI及JMX和命令行工具監(jiān)控Linux服務(wù)器CPU、內(nèi)存、磁盤(pán)等系統(tǒng)信息的方法,并提供示例代碼實(shí)現(xiàn)整合監(jiān)控功能,需要的朋友可以參考下
    2025-06-06
  • Java遞歸運(yùn)行的機(jī)制:遞歸的微觀解讀圖文分析

    Java遞歸運(yùn)行的機(jī)制:遞歸的微觀解讀圖文分析

    這篇文章主要介紹了Java遞歸運(yùn)行的機(jī)制:遞歸的微觀解讀,結(jié)合圖文形式詳細(xì)分析了java遞歸運(yùn)行的原理、機(jī)制與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • java EasyExcel面向Excel文檔讀寫(xiě)邏輯示例詳解

    java EasyExcel面向Excel文檔讀寫(xiě)邏輯示例詳解

    這篇文章主要為大家介紹了java EasyExcel面向Excel文檔讀寫(xiě)邏輯示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Java利用endorsed如何覆蓋jdk提供的類(lèi)詳解

    Java利用endorsed如何覆蓋jdk提供的類(lèi)詳解

    這篇文章主要給大家介紹了關(guān)于Java利用endorsed如何覆蓋jdk提供的類(lèi)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • java把excel內(nèi)容上傳到mysql實(shí)例代碼

    java把excel內(nèi)容上傳到mysql實(shí)例代碼

    這篇文章主要介紹了java把excel內(nèi)容上傳到mysql實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • spring boot 使用@Async實(shí)現(xiàn)異步調(diào)用方法

    spring boot 使用@Async實(shí)現(xiàn)異步調(diào)用方法

    本篇文章主要介紹了spring boot 使用@Async實(shí)現(xiàn)異步調(diào)用方法,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-04-04
  • Java如何分析算法的時(shí)間和空間復(fù)雜度

    Java如何分析算法的時(shí)間和空間復(fù)雜度

    這篇文章主要介紹了Java如何分析算法的時(shí)間和空間復(fù)雜度,在計(jì)算機(jī)科學(xué)中,計(jì)算復(fù)雜性解釋了算法的性能。文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-06-06
  • 最新評(píng)論