Java集合练习---扑克牌

Java集合练习—扑克牌

使用集合实现创建一副扑克牌,并随机给三位玩家发牌,留三张底牌,最后按从小到大的顺序输出

具体代码如下

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Poker {

	public static void main(String[] args) {
        //1.创建一副牌
        String[] colors = {"♥","♦","♠","♣"};
        String[] nums = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        //牌的集合
        Map<Integer,String> pokers = new HashMap<>();
        //牌的编号
        List<Integer>  numbers = new ArrayList<>();
        //牌的初始编号
        int pokerNum = 0;
        for (int i = 0; i < nums.length; i++) {
			for (int j = 0; j < colors.length; j++) {
				//组合牌名
				String pokerName = colors[j] +nums[i];
				//牌的对应编号
				numbers.add(pokerNum);
				//对应双列集合
				pokers.put(pokerNum,pokerName);
				//牌号自加
				pokerNum++;
			}
		}

        //添加大小王
        pokers.put(pokerNum, "小王");
        numbers.add(pokerNum++);
        
        pokers.put(pokerNum, "大王");
        numbers.add(pokerNum);
        
        //2.洗牌
        Collections.shuffle(numbers);
        //3.发牌
        //三位玩家,一个底牌
        List<Integer> dipai = new ArrayList<>();
        List<Integer> player1 = new ArrayList<>();
        List<Integer> player2 = new ArrayList<>();
        List<Integer> player3 = new ArrayList<>();
        //循环发牌
        for (int i = 0; i < numbers.size(); i++) {
			Integer number = numbers.get(i);
			
			if(i>=numbers.size()-3) {
				dipai.add(number);
			}else if(i%3==0) {
				player1.add(number);
			}else if(i%3==1) {
				player2.add(number);
			}else if(i%3==2) {
				player3.add(number);
			}
		}

        //4.看牌
        System.out.print("player1:");
        view(pokers,player1);
        System.out.println();
        System.out.print("player2:");
        view(pokers,player2);
        System.out.println();
        System.out.print("player3:");
        view(pokers,player3);
        System.out.println();
        System.out.print("dipai:");
        view(pokers,dipai);
        
	}
	
	/**
	 * 定义一个方法用来看牌
	 * */
	public static void view(Map<Integer,String> pokers,List<Integer> player) {
		//定义一个新集合用于接收转化后的集合
		List<String> playerPoker = new ArrayList<>();
		//将原集合从小到达排列
		Collections.sort(player);
		for(Integer in : player) {
			playerPoker.add(pokers.get(in));
        }
		//格式化输出
		for(String str : playerPoker) {
			System.out.print(str+" ");
		}
	}
}

每次运行后控制台输出效果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值