map集合之——应用:斗地主小游戏之发牌

public static void main(String[] args) {
	//准备牌:
		Map<Integer, String> poker=new HashMap<>();
		ArrayList<Integer> keys=new ArrayList<>();
		//准备花色,四色存入一个集合
		ArrayList<String> color=new ArrayList<>();
		color.add("♥");
		color.add("♠");
		color.add("♣");
		color.add("♦");
		//准备数字,按大小顺序存入一个数组
		String[] num={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
	//完成数字与纸牌的映射关系:
		int key=0;
		for (String string : num) {
			for (String string1 : color) {
				poker.put(key, string+string1);
				keys.add(key);
				key++;
			}
		}
		poker.put(52, "小鬼");
		keys.add(52);
		poker.put(53, "大鬼");
		keys.add(53);
	//使用双列Map(HashMap)集合,完成一个数字与字符串纸牌的对应关系(相当于一个字典)。
		//System.out.println(poker);
		
	//洗牌:
	//	通过数字完成洗牌发牌
		Collections.shuffle(keys);
		//System.out.println(keys+"="+poker.get(keys));
	//发牌:
	//	将每个人以及底牌设计为ArrayList<String>,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌。
		ArrayList<Integer> player1=new ArrayList<>();
		ArrayList<Integer> player2=new ArrayList<>();
		ArrayList<Integer> player3=new ArrayList<>();
		ArrayList<Integer> dipai=new ArrayList<>();
		for (int i = 0; i < 54; i++) {
			if (i<54&&i>=51) {
				dipai.add(keys.get(i));
			}else if (i%3==0) {
				player1.add(keys.get(i));
			}else if (i%3==1) {
				player2.add(keys.get(i));
			}else if (i%3==2) {
				player3.add(keys.get(i));
			}
		}
	//	存放的过程中要求数字大小与斗地主规则的大小对应。
		Collections.sort(player1);
		Collections.sort(player2);
		Collections.sort(player3);
		Collections.sort(dipai);
	//	将代表不同纸牌的数字分配给不同的玩家与底牌。
	//看牌:
	//	通过Map集合找到对应字符展示。
		for (Integer key1 : player1) {
			System.out.print(poker.get(key1)+"  ");
		}
		System.out.println();
		for (Integer key1: player2) {
			System.out.print(poker.get(key1)+"  ");
		}
		System.out.println();
		for (Integer key1 : player3) {
			System.out.print(poker.get(key1)+"  ");
		}
		System.out.println();
		for (Integer key1 : dipai) {
			System.out.print(poker.get(key1)+"  ");
		}
	//	过查询纸牌与数字的对应关系,由数字转成纸牌字符串再进行展示
	}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值