package com.weekend.day_01.poker;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/*需求:模拟斗地主发牌
* 步骤:
* 1 买牌
* 2 洗牌
* 3 发牌
* 4 看牌
*
* */
public class SendPokerTest {
private static final int Map = 0;
public static void main(String[] args) {
//买牌
//定义一个双列数列集合 键:表示牌的编号 值:表示具体的牌 规则:编号越小 牌越小
Map<Integer ,String> pokers = new HashMap();
//定义一个单列集合 ,存储所有牌的编号
List<Integer> list= new ArrayList<Integer>();
//具体的买牌动作 52张
String colors[] = {"♣","♦","♠","♥"};
String []numbers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
int num = 0 ;//表示牌的标号
//通过循环嵌套造普通牌
for(String number:numbers)//外循环 :获得所有点数
{
for(String color:colors) //内循环 :换取所有花色
{
//外一次 内四次
// String poker = color +numbers;
String poker =number + color;
//System.out.println(poker);
//将牌的编号 具体的牌放双列里
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);
//发牌
//1 定义四个集合 分把代表三个玩家
//1.1 定义四个集合 分别代表三个玩家 底牌
List<Integer> l1= new ArrayList();
List<Integer> l2= new ArrayList();
List<Integer> l3= new ArrayList();
List<Integer> dipai= new ArrayList();
//1.2 具体的发牌动作
for(int i = 0; i<list.size();i++)
{
//获取编号
Integer pokerNumber = list.get(i);
if (i >=list.size()-3)
{
dipai.add(pokerNumber);
}else if(i %3 ==0)
{
l1.add(pokerNumber);
}else if(i %3 ==1)
{
l2.add(pokerNumber);
}else if(i %3 ==2)
{
l3.add(pokerNumber);
}
}
System.out.println("-------------------------------------");
//定义一个方法 看牌
//将牌按自然顺序排列
//String str = printPoker(l1, pokers);
// System.out.println("l1:"+str);
System.out.println("l1玩家 :"+printPoker(l1, pokers));
System.out.println("l2玩家 :"+printPoker(l2, pokers));
System.out.println("l3玩家 :"+printPoker(l3, pokers));
System.out.println("dipai玩家 :"+printPoker(dipai, pokers));
}
public static String printPoker(List<Integer> nums, Map<Integer,String> pokers)
{
//对牌进行升序排列
Collections.sort(nums);
//遍历牌的编号
StringBuffer sb =new StringBuffer();
for(Integer num: nums)
{
//num就是要查找的具体牌号
String poker = pokers.get(num);
sb.append(poker + " ");
}
String str =sb.toString();
return str.trim();
}
}
案例:模拟斗地主发牌
最新推荐文章于 2022-10-26 21:06:01 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)