Java-斗地主

package com.athena.sys.modular.foreign.utils;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/**
 * @author wzq
 * @event
 * @describe
 * @Data on 2021/8/10  14:32
 */
public class TestRun {

/*
* 具体规则:
	1. 组装54张扑克牌,扑克牌带花色
2. 将54张牌顺序打乱
	3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
	4. 查看三人各自手中的牌、底牌
    5. 要求每个人手中的牌按照大小进行排序 :
    手中扑克牌从大到小的摆放顺序:大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3
* */
        public static void main(String[] args) {
            Map<Integer,String> Pai = new HashMap<>();
            ArrayList<Integer> list = new ArrayList<>();
            String[] biaoShi = {"2","A","K","Q","J","3","4","5","6","7","8","9","10"};
            String[] huaSe = {"♠","♥","♦","♣"};
            //将扑克牌中的A到K全部录入进集合
            //将建设置为2到54的方便将这些个牌号进行排序
            //留出来的0和1是为了给大小王
            int index = 2;
            for (String biao: biaoShi){
                for (String hua: huaSe){
                    String s = hua+biao;
                    Pai.put(index,s);
                    list.add(index);
                    index++;
                }
            }
            //将大小王和其所以0,1录入进Map和ArrayList集合
            Pai.put(0,"大王");
            Pai.put(1,"小王");
            list.add(0);
            list.add(1);
            //将List打乱,也就是将Map的键打乱,进而打乱值
            Collections.shuffle(list);
            //建立三个用户一个底牌的集合方便向里面录入
            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 < list.size();i++){
                //因为索引从零开始因此54张牌最大排数为53
                //因此需要小于等于51才能获取到三张底牌
                if (i >= 51){
                    //将list里面的i值添加进来
                    diPai.add(list.get(i));
                }else if (i % 3 == 0){
                    player1.add(list.get(i));
                }else if (i % 3 == 1){
                    player2.add(list.get(i));
                }else {
                    player3.add(list.get(i));
                }
            }
            //再将三个用户和一个底牌按照顺序排列
            Collections.sort(player1);
            Collections.sort(player2);
            Collections.sort(player3);
            Collections.sort(diPai);
            paiXu("农民",player1,Pai);
            paiXu("农民",player2,Pai);
            paiXu("地主",player3,Pai);
            paiXu("底牌",diPai,Pai);
        }
        public static void paiXu(String name,ArrayList<Integer> list,Map<Integer,String> m){
            //将用户加在最前面
            System.out.print(name+":"+" ");
            //将List里面的值遍历和Map里面的键相关联
            for (Integer key : list){
                //获取到的就是Map的键值
                String value = m.get(key);
                //输出value值
                System.out.print(value+" ");
            }
            System.out.println();
        }
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值