package cn.itcast.Demo10;(包类名)
import java.util.ArrayList;(导包方法名,以下四个同上)
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SendPokerTest {
public static void main(String[] args) { // main 方法
// 定义一个双键集合,建;表示排的编号,值:表示具体的牌 ,
Map<Integer ,String> pokers = new HashMap<>();
//定义一个单键
List<Integer> list = new ArrayList<>();
//具体的牌
String []colors = {"♠","♥","♣","♦"};
String []numbers = {"3","4","5","6","7","8","9","10","J","Q","K",
"A","2"};
int num = 1 ;
for (String number : numbers) { //定义点数
for (String color : colors) { //定义花色
String poker = color+number;
pokers.put(num,poker);
list.add(num);
num++;
}
}
//添加大小王
pokers.put(num ,"小王");
list.add(num++);
pokers.put(num,"大王");
list.add(num);
***//第一次的运行结果,看是否够个数正确***
System.out.println("所有的牌:"+pokers);
System.out.println("牌的编号:"+list);
**// 洗牌**
Collections.shuffle(list);
System.out.println("洗好牌后,编号为:"+list);
**// 发牌**
List <Integer> ligang = new ArrayList<>();
List <Integer> xioafeng = new ArrayList<>();
List<Integer> liliheng = new ArrayList<>( );
List<Integer> dipai = new ArrayList<>();
**//具体的发牌动作,将索引和3 去摸,决定发牌给那个人**
for (int i = 0; i <list.size() ; i++) {
Integer pokerNum = list.get(i);
if (i >=list.size() - 3 ){
dipai.add(pokerNum);
}
else if (i %3 ==1 ){
ligang.add(pokerNum);
}
else if (i%3 ==2 ){
xioafeng.add(pokerNum);
}
else if (i%3 == 0 ){
liliheng.add(pokerNum);
}
}
/* System.out.println("港的牌:"+ligang);
System.out.println("晓峰的牌:"+xioafeng);
System.out.println("立衡的牌:"+liliheng);
System.out.println("底牌 :"+dipai);*/ (这几行无用可以删掉)
**//看牌**
System.out.println("-----------------------------------");
System.out.println("港的牌:"+printPoker(ligang,pokers));
System.out.println("峰的牌:"+printPoker(xioafeng,pokers));
System.out.println("立衡的牌:"+printPoker(liliheng,pokers));
System.out.println("底牌 :"+printPoker(dipai,pokers));
}
public static String printPoker (List<Integer> nums,
Map<Integer,String> pokers){ **// 定义一个方法
// 对牌进行升序**
Collections.sort(nums);
**//遍历牌的编号集合,获取每一个编号**
StringBuilder sb = new StringBuilder();
for (Integer num : nums) {
**// num要查找的具体牌的编号**
String poker = pokers.get(num);
sb.append(poker+" ");
}
String str = sb.toString();
return str.trim();
}
}
运行结果如下:
所有的牌:{1=♠3, 2=♥3, 3=♣3, 4=♦3, 5=♠4, 6=♥4, 7=♣4, 8=♦4, 9=♠5, 10=♥5, 11=♣5, 12=♦5, 13=♠6, 14=♥6, 15=♣6, 16=♦6, 17=♠7, 18=♥7, 19=♣7, 20=♦7, 21=♠8, 22=♥8, 23=♣8, 24=♦8, 25=♠9, 26=♥9, 27=♣9, 28=♦9, 29=♠10, 30=♥10, 31=♣10, 32=♦10, 33=♠J, 34=♥J, 35=♣J, 36=♦J, 37=♠Q, 38=♥Q, 39=♣Q, 40=♦Q, 41=♠K, 42=♥K, 43=♣K, 44=♦K, 45=♠A, 46=♥A, 47=♣A, 48=♦A, 49=♠2, 50=♥2, 51=♣2, 52=♦2, 53=小王, 54=大王}
牌的编号:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54]
洗好牌后,编号为:[45, 36, 37, 5, 38, 1, 9, 20, 12, 16, 33, 50, 18, 19, 52, 24, 21, 14, 48, 54, 30, 53, 31, 7, 13, 23, 25, 44, 35, 2, 46, 47, 43, 29, 39, 40, 28, 3, 51, 49, 11, 34, 15, 6, 10, 26, 41, 32, 8, 42, 22, 4, 27, 17]
最终的结果
李港的牌:♣3 ♥4 ♣5 ♣7 ♦7 ♠8 ♣8 ♣10 ♠J ♣J ♦J ♥Q ♣Q ♠K ♥K ♣A 大王
晓峰的牌:♠3 ♥3 ♣4 ♥5 ♦5 ♥6 ♥8 ♠9 ♥10 ♦10 ♥J ♠Q ♦Q ♣K ♥2 ♣2 ♦2
李立衡的牌:♠4 ♦4 ♠5 ♠6 ♣6 ♦6 ♥7 ♦8 ♥9 ♦9 ♠10 ♦K ♠A ♥A ♦A ♠2 小王
底牌 :♦3 ♠7 ♣9
注:每运行一次结果不同