java斗地主扑克 扑克牌 洗牌 发牌 Collection 集合练习

Posted Advancing Swift

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java斗地主扑克 扑克牌 洗牌 发牌 Collection 集合练习相关的知识,希望对你有一定的参考价值。

package com.swift.poker;

import java.util.ArrayList;
import java.util.Collections;

/*训练考核知识点:Collection接口的基本方法、

训练描述:
按照斗地主的规则,完成洗牌发牌的动作。
    具体规则:
        使用54张牌打乱顺序
        三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
        
操作步骤描述:
?准备牌:
    牌可以设计为一个ArrayList<String>,每个字符串为一张牌。
    每张牌由花色数字两部分组成,我们可以使用花色集合与数字集合嵌套迭代完成每张牌的组装。
    牌由Collections类的shuffle方法进行随机排序。
?发牌:
    将每个人以及底牌设计为ArrayList<String>,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌。
?看牌:
    直接打印每个集合*/

public class Poker {

    public static void main(String[] args) {

        ArrayList<String> huase=new ArrayList<String>();
        huase.add("?");
        huase.add("?");
        huase.add("?");
        huase.add("方片");
        ArrayList<String> shuzi=new ArrayList<String>();
        shuzi.add("A");
        shuzi.add("2");
        shuzi.add("3");
        shuzi.add("4");
        shuzi.add("5");
        shuzi.add("6");
        shuzi.add("7");
        shuzi.add("8");
        shuzi.add("9");
        shuzi.add("10");
        shuzi.add("J");
        shuzi.add("Q");
        shuzi.add("K");
        ArrayList<String> puke=new ArrayList<String>();
        for(String hua:huase) {
            for(String shu:shuzi) {
                puke.add(hua+shu);
            }
        }
        puke.add("大王");
        puke.add("小王");
        for(String str:puke) {
            System.out.print(str+" ");
        }
        
        //随机洗牌
        Collections.shuffle(puke);
        System.out.println();
        for(String str:puke) {
            System.out.print(str+" ");
        }
        //发牌
        ArrayList<String> player1=new ArrayList<String>();
        ArrayList<String> player2=new ArrayList<String>();
        ArrayList<String> player3=new ArrayList<String>();
        ArrayList<String> dipai=new ArrayList<String>();
        for(int i=0;i<54;i++) {
            if(i<3) {
                dipai.add(puke.get(i));
            }
            else if(i%3==0) {
                player1.add(puke.get(i));
            }
            else if(i%3==1) {
                player2.add(puke.get(i));
            }
            else if(i%3==2) {
                player3.add(puke.get(i));
            }
        }
        //看牌
        look(player1);
        look(player2);
        look(player3);
        look(dipai);
    }

    private static void look(ArrayList<String> pai) {
        System.out.println();
        for(String str:pai) {
            System.out.print(str+" ");
        }
        System.out.println();
        
    }

}

 

以上是关于java斗地主扑克 扑克牌 洗牌 发牌 Collection 集合练习的主要内容,如果未能解决你的问题,请参考以下文章

模拟斗地主洗牌发牌

代码实现:模拟斗地主洗牌和发牌,牌没有排序

模拟斗地主真人在线发牌

Java学习笔记34(集合框架八:综合案例:模拟斗地主的洗牌发牌)

java语言实现简单的洗牌,发牌

Python解决斗地主发牌问题及列表基础知识运用