3.java 模拟保皇游戏开始的发牌过程

3.模拟保皇游戏开始的发牌过程。

规则:4副扑克,5个玩家。
1)有一个大王标记为皇上。每次发牌时,所发牌中有该大王的玩家是皇上。
2)皇帝选择侍卫(也叫保儿、腿子,游戏过程中与皇帝一伙):作为皇上的玩家从自己的牌中选择一张拥有相同三张(点数和花色都相同)的一张牌(不能是2、3、大小王),其他四个玩家中有这张牌的就是侍卫。例如,皇上有三个红桃5,其他四个玩家中有红桃5的玩家就是侍卫。
特殊情况是:1)皇上有一套四张牌相同的点数的牌,皇帝 可以自己做侍卫;2)皇帝没有满足要求的牌,无法获得侍卫。
程序要求:程序启动后生成5个玩家,并自动给他们发牌。然后输出:
1)皇帝和侍卫的名字及其手里的牌(每张牌输出为“花色”+“点数”,如红桃5,牌之间用“,”分割),并按照大王、小王、2、A、K、Q、J、10、9、8、7、6、5、4、3的顺序排列,相同点数但不同花色的牌要把相同花色的牌放在一起;
2)那张作为侍卫所特有的牌(“花色”+“点数”)。如果无法得到侍卫,则程序输出相应的提示。

例如,程序运行后输出如下的结果:

皇帝是:玩家1
皇帝的牌是:[皇上, 小王, 小王, 小王, 小王, 方片2, 黑桃2, 黑桃A, 黑桃A, 红桃A, 方片K, 梅花K, 黑桃K, 红桃K, 梅花Q, 梅花Q, 黑桃Q, 方片J, 方片J, 方片J, 红桃J, 梅花9, 黑桃9, 黑桃9, 方片8, 梅花8, 红桃8, 梅花7, 黑桃7, 黑桃7, 红桃7, 梅花6, 梅花6, 黑桃6, 黑桃6, 方片5, 梅花5, 黑桃5, 黑桃5, 梅花4, 梅花4, 梅花4, 方片3, 红桃3]
侍卫对应的牌是:方片J
侍卫是:玩家2
侍卫的牌是:[方片2, 黑桃2, 红桃2, 方片A, 方片K, 梅花K, 梅花K, 黑桃K, 红桃K, 红桃K, 黑桃Q, 红桃Q, 方片J, 方片10, 黑桃10, 红桃10, 红桃10, 红桃10, 方片9, 红桃9, 方片8, 梅花8, 梅花8, 黑桃8, 黑桃8, 黑桃8, 红桃8, 红桃8, 方片7, 黑桃7, 黑桃7, 方片6, 黑桃6, 黑桃5, 梅花4, 黑桃4, 红桃4, 红桃4, 方片3, 梅花3, 黑桃3, 红桃3, 红桃3]

参考答案

public class Main {

    public static void main(String[] args) {
        Poker p = new Poker(); // 生成1副扑克
        String []poker =  p.getPoker(); // 获取这副扑克

        p.playgame(); // 生成4副扑克,并洗好
        List poker_list = p.getPoker_list(); //获取 洗好的牌
        //生成五名玩家
        PlayUser [] playuser = new PlayUser[5];
        for(int i = 0; i < 5; i ++ ){
            playuser[i] = new PlayUser(poker);
        }
        //测试玩家是否生成
//        for( int i = 0; i < 5; i ++ ){
//            System.out.println(playuser[i].getName());
//        }
        //发牌并标记皇帝
        int flag_index = 0;
        for(int i = 0; i < poker_list.size(); i ++){
            int t = i % 5;
            int index = (int)poker_list.get(i);
            (playuser[t].getUser_poker())[index] ++;
            if( index == 54 ){ // 表示皇上
                flag_index = t;
            }
        }
        //测试发牌是否生成
        System.out.println("玩家1-玩家5的牌为:");
        for( int i = 0; i < 5; i ++ ){
            System.out.println(playuser[i]);
        }
        // 找到皇上
//        System.out.println("\n\n皇上是玩家" + (flag_index + 1));

        // 找皇上的侍卫
        // 判断皇帝自己能否是侍卫
        if( playuser[flag_index].jment()){
            System.out.println("\n\n皇上是: " +  playuser[flag_index].getName() + "( 可自保 )");
            System.out.print("皇上的牌是:");
            System.out.println(playuser[flag_index]);
        }
        else{
            List list = playuser[flag_index].select_guard();
            System.out.println("皇上有几个3个相同的: " + list.size());
            if( list.size() > 1 ){ // 如果皇上有多个3个相同的
                int ind = (int) (Math.random() * list.size());
                System.out.println("\n\n皇上是: " +  playuser[flag_index].getName());
                System.out.println(playuser[flag_index]);
                System.out.println("侍卫对应的牌是:" + list.get(ind));
                for( int i = 0; i < playuser.length ; i ++ ){
                    if( i != flag_index && playuser[i].getUser_pokers().indexOf(list.get(ind)) != -1 ) {
                        System.out.println("侍卫是:" + playuser[i].getName());
                        System.out.print("侍卫的牌是:");
                        System.out.println(playuser[i]);
                    }
                }
            }
            else if( list.size() == 1 ){
                System.out.println("\n\n皇上是: " +  playuser[flag_index].getName());
                System.out.println(playuser[flag_index]);
                System.out.println("侍卫对应的牌是:" + list.get(0));
                for( int i = 0; i < playuser.length; i ++ ){
                    if( i != flag_index && playuser[i].getUser_pokers().indexOf(list.get(0)) >= 0 ){
                        System.out.println("侍卫是:" + playuser[i].getName());
                        System.out.print("侍卫的牌是:");
                        System.out.println(playuser[i]);
                    }
                }
            }
            else{
                System.out.println("\n\n皇上是: " +  playuser[flag_index].getName() + "( 无法获取侍卫 )");
                System.out.print("皇上的牌是:");
                System.out.println(playuser[flag_index]);
            }
        }
    }
}

测试结果1

玩家1-玩家5的牌为:
[皇上, 大王, 大王, 小王, 方块2, 方块2, 黑桃2, 红桃2, 梅花A, 梅花A, 方块A, 红桃A, 红桃A, 梅花K, 方块K, 黑桃K, 黑桃K, 红桃K, 红桃K, 梅花Q, 红桃Q, 红桃Q, 黑桃J, 红桃J, 梅花10, 方块10, 梅花9, 方块9, 黑桃9, 梅花8, 梅花8, 方块7, 黑桃7, 红桃7, 红桃6, 红桃6, 红桃6, 梅花5, 梅花5, 方块5, 方块5, 黑桃5, 方块4, 黑桃4]
[梅花2, 方块2, 黑桃2, 红桃2, 红桃2, 梅花A, 方块A, 黑桃A, 红桃A, 梅花K, 黑桃K, 红桃K, 方块Q, 黑桃Q, 红桃Q, 红桃Q, 黑桃J, 黑桃J, 红桃J, 梅花10, 方块9, 红桃9, 梅花8, 方块8, 黑桃8, 黑桃8, 梅花7, 梅花6, 梅花6, 方块6, 方块6, 方块6, 方块5, 方块5, 红桃5, 红桃5, 梅花3, 梅花3, 梅花3, 方块3, 方块3, 方块3, 红桃3]
[小王, 梅花2, 黑桃2, 黑桃2, 红桃2, 梅花Q, 梅花Q, 方块Q, 方块Q, 梅花J, 梅花J, 梅花J, 方块J, 方块J, 红桃J, 梅花10, 方块10, 红桃10, 梅花9, 黑桃9, 黑桃9, 黑桃9, 红桃9, 方块8, 方块8, 黑桃8, 梅花7, 方块7, 方块7, 黑桃7, 梅花6, 梅花6, 黑桃6, 黑桃5, 黑桃5, 红桃5, 梅花4, 梅花4, 梅花4, 方块4, 红桃4, 黑桃3, 黑桃3]
[大王, 小王, 小王, 梅花2, 方块2, 方块A, 方块A, 红桃A, 方块K, 方块K, 梅花Q, 方块Q, 黑桃Q, 梅花J, 方块J, 黑桃J, 方块10, 黑桃10, 黑桃10, 红桃10, 梅花9, 红桃9, 梅花8, 红桃8, 红桃8, 红桃8, 红桃8, 方块7, 黑桃7, 黑桃7, 红桃7, 红桃7, 方块6, 黑桃6, 黑桃6, 梅花5, 红桃5, 黑桃4, 红桃4, 梅花3, 方块3, 黑桃3, 红桃3]
[大王, 梅花2, 梅花A, 黑桃A, 黑桃A, 黑桃A, 梅花K, 梅花K, 方块K, 黑桃K, 红桃K, 黑桃Q, 黑桃Q, 方块J, 红桃J, 梅花10, 方块10, 黑桃10, 黑桃10, 红桃10, 红桃10, 梅花9, 方块9, 方块9, 红桃9, 方块8, 黑桃8, 梅花7, 梅花7, 红桃7, 黑桃6, 红桃6, 梅花5, 黑桃5, 梅花4, 方块4, 方块4, 黑桃4, 黑桃4, 红桃4, 红桃4, 黑桃3, 红桃3]
皇上有几个3个相同的: 1

皇上是: 玩家1
[皇上, 大王, 大王, 小王, 方块2, 方块2, 黑桃2, 红桃2, 梅花A, 梅花A, 方块A, 红桃A, 红桃A, 梅花K, 方块K, 黑桃K, 黑桃K, 红桃K, 红桃K, 梅花Q, 红桃Q, 红桃Q, 黑桃J, 红桃J, 梅花10, 方块10, 梅花9, 方块9, 黑桃9, 梅花8, 梅花8, 方块7, 黑桃7, 红桃7, 红桃6, 红桃6, 红桃6, 梅花5, 梅花5, 方块5, 方块5, 黑桃5, 方块4, 黑桃4]
侍卫对应的牌是:红桃6
侍卫是:玩家5
侍卫的牌是:[大王, 梅花2, 梅花A, 黑桃A, 黑桃A, 黑桃A, 梅花K, 梅花K, 方块K, 黑桃K, 红桃K, 黑桃Q, 黑桃Q, 方块J, 红桃J, 梅花10, 方块10, 黑桃10, 黑桃10, 红桃10, 红桃10, 梅花9, 方块9, 方块9, 红桃9, 方块8, 黑桃8, 梅花7, 梅花7, 红桃7, 黑桃6, 红桃6, 梅花5, 黑桃5, 梅花4, 方块4, 方块4, 黑桃4, 黑桃4, 红桃4, 红桃4, 黑桃3, 红桃3]

测试结果2

玩家1-玩家5的牌为:
[大王, 梅花2, 方块2, 方块2, 黑桃2, 黑桃2, 黑桃A, 梅花K, 方块K, 方块K, 黑桃K, 方块Q, 黑桃Q, 梅花J, 方块J, 方块J, 黑桃J, 黑桃J, 红桃J, 梅花10, 梅花10, 黑桃10, 红桃10, 方块9, 梅花8, 方块8, 黑桃8, 黑桃8, 红桃8, 方块7, 方块7, 黑桃7, 梅花6, 方块6, 黑桃6, 方块5, 红桃5, 红桃5, 梅花4, 梅花4, 黑桃4, 黑桃4, 红桃4, 红桃4]
[小王, 红桃2, 梅花A, 梅花A, 方块A, 方块A, 红桃A, 梅花K, 红桃K, 梅花Q, 方块Q, 黑桃Q, 梅花J, 梅花J, 梅花J, 方块J, 梅花10, 方块10, 方块10, 红桃10, 梅花9, 方块9, 方块9, 红桃9, 红桃9, 红桃8, 梅花7, 梅花7, 黑桃7, 梅花6, 方块6, 黑桃6, 红桃6, 红桃6, 梅花5, 梅花5, 方块5, 梅花4, 红桃4, 方块3, 方块3, 方块3, 黑桃3]
[皇上, 大王, 小王, 小王, 方块2, 黑桃2, 黑桃2, 梅花A, 方块A, 黑桃A, 红桃A, 红桃A, 梅花K, 方块K, 红桃Q, 红桃Q, 红桃Q, 红桃Q, 红桃J, 黑桃10, 方块9, 黑桃9, 黑桃9, 梅花8, 方块8, 梅花7, 方块7, 黑桃7, 红桃7, 红桃7, 梅花6, 红桃6, 梅花5, 黑桃5, 黑桃5, 黑桃5, 红桃5, 梅花4, 方块4, 方块4, 方块3, 红桃3, 红桃3]
[大王, 大王, 小王, 梅花2, 方块2, 红桃2, 红桃2, 梅花A, 黑桃A, 黑桃K, 红桃K, 红桃K, 梅花Q, 梅花Q, 黑桃Q, 黑桃J, 红桃J, 红桃J, 方块10, 方块10, 黑桃10, 红桃10, 梅花9, 黑桃9, 黑桃9, 红桃9, 红桃9, 梅花8, 梅花8, 方块8, 红桃8, 梅花7, 方块7, 梅花6, 方块6, 方块6, 黑桃6, 方块5, 黑桃5, 方块4, 方块4, 黑桃4, 黑桃3]
[梅花2, 梅花2, 红桃2, 方块A, 黑桃A, 红桃A, 梅花K, 方块K, 黑桃K, 黑桃K, 红桃K, 梅花Q, 方块Q, 方块Q, 黑桃Q, 方块J, 黑桃J, 梅花10, 黑桃10, 红桃10, 梅花9, 梅花9, 方块8, 黑桃8, 黑桃8, 红桃8, 黑桃7, 红桃7, 红桃7, 黑桃6, 红桃6, 梅花5, 方块5, 红桃5, 黑桃4, 红桃4, 梅花3, 梅花3, 梅花3, 梅花3, 黑桃3, 黑桃3, 红桃3]

皇上是: 玩家3( 可自保 )
皇上的牌是:[皇上, 大王, 小王, 小王, 方块2, 黑桃2, 黑桃2, 梅花A, 方块A, 黑桃A, 红桃A, 红桃A, 梅花K, 方块K, 红桃Q, 红桃Q, 红桃Q, 红桃Q, 红桃J, 黑桃10, 方块9, 黑桃9, 黑桃9, 梅花8, 方块8, 梅花7, 方块7, 黑桃7, 红桃7, 红桃7, 梅花6, 红桃6, 梅花5, 黑桃5, 黑桃5, 黑桃5, 红桃5, 梅花4, 方块4, 方块4, 方块3, 红桃3, 红桃3]

测试结果3

玩家1-玩家5的牌为:
[大王, 大王, 梅花A, 梅花A, 梅花A, 黑桃A, 黑桃A, 红桃A, 黑桃K, 方块Q, 红桃Q, 红桃Q, 梅花J, 方块J, 方块10, 方块10, 方块10, 红桃10, 梅花9, 方块8, 红桃8, 红桃8, 黑桃7, 黑桃7, 红桃7, 梅花6, 方块6, 黑桃6, 黑桃6, 红桃6, 红桃6, 方块5, 方块5, 方块5, 黑桃5, 红桃5, 梅花4, 方块4, 红桃4, 梅花3, 方块3, 方块3, 黑桃3, 红桃3]
[小王, 梅花2, 梅花2, 黑桃2, 红桃2, 红桃2, 梅花A, 方块A, 红桃A, 梅花K, 梅花Q, 方块Q, 方块Q, 方块Q, 黑桃Q, 黑桃Q, 梅花J, 梅花J, 方块J, 黑桃J, 黑桃J, 红桃J, 方块10, 黑桃10, 红桃10, 红桃10, 梅花9, 梅花9, 方块9, 方块9, 黑桃8, 黑桃8, 红桃8, 方块7, 方块7, 黑桃7, 梅花5, 红桃5, 方块4, 方块4, 梅花3, 梅花3, 黑桃3]
[小王, 方块2, 方块2, 黑桃2, 黑桃A, 方块K, 方块K, 方块K, 黑桃K, 红桃K, 红桃K, 梅花Q, 梅花Q, 黑桃Q, 梅花J, 方块J, 红桃J, 梅花10, 梅花10, 黑桃10, 黑桃10, 红桃10, 黑桃9, 黑桃9, 红桃9, 红桃9, 红桃9, 梅花8, 梅花8, 梅花8, 方块8, 梅花7, 梅花6, 梅花6, 方块6, 方块6, 黑桃6, 黑桃5, 黑桃4, 红桃4, 梅花3, 方块3, 方块3]
[皇上, 大王, 大王, 小王, 梅花2, 方块2, 黑桃2, 红桃A, 红桃A, 梅花K, 梅花K, 红桃K, 红桃K, 黑桃Q, 方块J, 黑桃J, 红桃J, 梅花10, 黑桃10, 梅花9, 方块9, 黑桃9, 红桃9, 梅花8, 方块8, 方块8, 黑桃8, 红桃8, 梅花7, 方块7, 方块7, 黑桃7, 红桃7, 梅花6, 梅花5, 梅花5, 黑桃5, 红桃5, 梅花4, 方块4, 黑桃4, 红桃4, 红桃3]
[小王, 梅花2, 方块2, 黑桃2, 红桃2, 红桃2, 方块A, 方块A, 方块A, 黑桃A, 梅花K, 方块K, 黑桃K, 黑桃K, 梅花Q, 红桃Q, 红桃Q, 黑桃J, 红桃J, 梅花10, 方块9, 黑桃9, 黑桃8, 梅花7, 梅花7, 红桃7, 红桃7, 方块6, 黑桃6, 红桃6, 红桃6, 梅花5, 方块5, 黑桃5, 红桃5, 梅花4, 梅花4, 黑桃4, 黑桃4, 红桃4, 黑桃3, 黑桃3, 红桃3]
皇上有几个3个相同的: 0

皇上是: 玩家4( 无法获取侍卫 )
皇上的牌是:[皇上, 大王, 大王, 小王, 梅花2, 方块2, 黑桃2, 红桃A, 红桃A, 梅花K, 梅花K, 红桃K, 红桃K, 黑桃Q, 方块J, 黑桃J, 红桃J, 梅花10, 黑桃10, 梅花9, 方块9, 黑桃9, 红桃9, 梅花8, 方块8, 方块8, 黑桃8, 红桃8, 梅花7, 方块7, 方块7, 黑桃7, 红桃7, 梅花6, 梅花5, 梅花5, 黑桃5, 红桃5, 梅花4, 方块4, 黑桃4, 红桃4, 红桃3]

完整代码连接:link

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Hello Spring

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值