java基础--集合案例斗地主发牌排序
生活随笔
收集整理的這篇文章主要介紹了
java基础--集合案例斗地主发牌排序
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
package com.henu;import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class Demo04_斗地主_制牌_洗牌_發(fā)牌_有序 {public static void main(String[] args) {String[] nums = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};String[] color = {"?","?","?","?"};//定義map存儲所有牌,采用它的key為后期的每個人的手牌排序做準(zhǔn)備Map<Integer, String> hMap = new HashMap<>();//list存取序號,相當(dāng)于map的key值。List<Integer> cardId = new ArrayList<Integer>();int count = 1;//雙重循環(huán)將牌存入到map中,注意外內(nèi)循環(huán)的不同數(shù)組,為了后續(xù)的排序for (String str1 : nums) {for (String str2 : color) {cardId.add(count);hMap.put(count++, str2+str1);}}hMap.put(53, "小?");hMap.put(54, "大?");cardId.add(53);cardId.add(54);//將牌的序號進行打亂Collections.shuffle(cardId);//定義三個玩家List<Integer> xiaoTeng = new ArrayList<>();List<Integer> xiaoYun = new ArrayList<>();List<Integer> xiaoHong = new ArrayList<>();List<Integer> diPai = new ArrayList<>();//發(fā)牌for (int i = 0; i < cardId.size(); i += 3) {if (i < cardId.size()-3) {xiaoTeng.add(cardId.get(i));xiaoYun.add(cardId.get(i+1));xiaoHong.add(cardId.get(i+2));}else {diPai.add(cardId.get(i-1));diPai.add(cardId.get(i));diPai.add(cardId.get(i+1));}}//輸出結(jié)果System.out.println("小騰的牌是:"+toCard(xiaoTeng, hMap));System.out.println("小云的牌是:"+toCard(xiaoYun, hMap));System.out.println("小宏的牌是:"+toCard(xiaoHong, hMap));System.out.println("底牌的牌是:"+toCard(diPai, hMap));}//根據(jù)list的序號取map的value;即根據(jù)序號對map的 牌進行取,得到的即是排序好的紙牌。public static List<String> toCard(List<Integer> user,Map<Integer, String> hMap){//現(xiàn)將抽到的牌進行排序Collections.sort(user);//根據(jù)序號取到牌List<String> userCard = new ArrayList<>();for (Integer in : user) {userCard.add(hMap.get(in));}return userCard;}}
結(jié)果輸出:?
?
?
總結(jié)
以上是生活随笔為你收集整理的java基础--集合案例斗地主发牌排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java基础---关于比较器Compar
- 下一篇: java基础---多线程同步锁问题