JAVA Collection类做的斗地主游戏

该博客详细介绍了如何使用Java编程实现斗地主游戏。首先准备54张牌的ArrayList,然后通过Collections.shuffle进行洗牌,接着将牌分别分配给三位玩家和底牌。最后,程序展示了不同玩家和底牌的牌面,每次运行发牌顺序都会不同。
摘要由CSDN通过智能技术生成

斗地主游戏

程序步骤:
1.准备牌
2.洗牌
3.发牌
4.看牌

package com.collection.LandlordGame;
import java.util.ArrayList;
import java.util.Collections;
public class Game {
    public static void main(String[] args) {
//1.准备牌
        //定义一个储存54张牌的ArrayList集合,泛型使用String
        ArrayList<String> poker = new ArrayList<>();
        //定义两个数组,一个数组存储牌的花色,一个数组存储牌的序号
        String[] colors={"方片","梅花","红桃","黑桃"};
        String[] numbers={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
        //先把特殊的大王、小王加入到集合中
        poker.add("大王");
        poker.add("小王");
        //        嵌套输出两个数组
        for (String num:numbers) {
            for (String col:colors) {
                //System.out.println(col+num);测试的时候打开
                //把组装好的牌放到集合中
                poker.add(col+num);
            }
        }//System.out.println(poker);看54张牌进入集合中测试的时候打开


/*2.洗牌  用到集合的工具类 Collections 的静态方法,直接类名.方法调用
        static void shuffle(List<?> list)  使用默认随机源对指定列表进行置换。
         */
        Collections.shuffle(poker);//对集合进行随机置换。
/*        System.out.println(poker);
        System.out.println(poker.size());这两行测试用*/
//3.发牌     创三个集合接收牌,和一个底牌集合
        ArrayList<String> player1 = new ArrayList<>();
        ArrayList<String> player2 = new ArrayList<>();
        ArrayList<String> player3 = new ArrayList<>();
        ArrayList<String> dipai = new ArrayList<>();
        //把大集合poker的元素分配给四个小集合
        for (int i = 0; i < poker.size(); i++) {
            String p=poker.get(i);
            if(i>=51){
                dipai.add(p);
            }else if (i%3==0){
                player1.add(p);
            }else if (i%3==1){
                player2.add(p);
            }else if (i%3==2){
                player3.add(p);
            }
        }
//4.看牌
        System.out.println("韦老六:"+player1);
        System.out.println("李老三:"+player2);
        System.out.println("熊老九:"+player3);
        System.out.println("底牌:"+dipai);
//一        for (int i = 0; i < player1.size(); i++) {//普通for循环遍历
//            System.out.print(player1.get(i));
//
//        }
//        System.out.println("================================");
// 二       for (String a:player2) {//增强for循环遍历
//            System.out.print(a);
//        }
// 三      迭代器遍历
//
//        System.out.println("================================");
//        Iterator<String> it = poker.iterator();
//        while (it.hasNext()){
//            String next = it.next();
//            System.out.print(next);
//        }
    }
}

测试结果图:

/*发的牌每一次的不一样
韦老六:[大王, 小王, 黑桃A, 黑桃2, 梅花9, 黑桃5, 红桃Q, 方片3, 梅花8, 红桃A, 黑桃10, 方片8, 黑桃Q, 梅花J, 梅花4, 红桃K, 方片6]
李老三:[梅花10, 方片A, 方片K, 红桃9, 黑桃6, 方片9, 黑桃9, 方片Q, 梅花7, 红桃J, 黑桃J, 黑桃8, 梅花6, 红桃3, 梅花A, 红桃7, 方片5]
熊老九:[梅花K, 方片7, 方片4, 方片J, 梅花5, 黑桃3, 红桃8, 红桃2, 黑桃7, 红桃4, 红桃10, 黑桃4, 方片2, 黑桃K, 方片10, 红桃6, 梅花2]
底牌:[红桃5, 梅花3, 梅花Q]*/ 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值