案例:模拟斗地主发牌

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();
	
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值