java实现洗牌、发牌、留三张牌

代码:

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

public class start {

    public static void main(String[] args) {
        ArrayList<String> array = new ArrayList<>();
        String[] colors = {"🔶","🧡","♠","♣"};
        String[] numbers = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
        for (String color:colors) { // 遍历存牌
            for (String number: numbers) {
//                把花色和扑克牌连在一起,拼接字符串
                String poker = color + number;
                array.add(poker);
            }
        }
//        存入小王
        array.add("smalljoker");
//        存入大王
        array.add("JOKER");
        System.out.println("打印完整的一副牌:");
        System.out.println(array);
        ArrayList<String> player1 = new ArrayList<>();	// 玩家1
        ArrayList<String> player2 = new ArrayList<>();	// 玩家2
        ArrayList<String> player3 = new ArrayList<>();	// 玩家3
        //三张底牌
        ArrayList<String> underPokes = new ArrayList<>();
//       随机打乱原来的顺序, 洗牌
        Collections.shuffle(array);
        System.out.println("洗牌后打印:");
        System.out.println(array);

//        发牌
        for (int i = 0; i < array.size(); i++ ){
            String poke = array.get(i);
            if( i >= array.size()-3 ){  // 最后三张为底牌(如果索引大于总牌数 - 3 ,则说明已经到了底牌处,需要把牌放入底牌数组)
                underPokes.add(poke);
            }else if( i%3 == 0){    // i%3 ,因为有三个玩家,所以对三求余,实现一人一张的发牌方法
                player1.add(poke);
            }else if( i%3 == 1){
                player2.add(poke);
            }else {
                player3.add(poke);
            }
        }
        printPoke("player1",player1);	// 看牌
        printPoke("player2",player2);
        printPoke("player3",player3);
        printPoke("underPokes",underPokes);
    }
    public static void printPoke(String name,ArrayList<String> arrayList){	// 看牌功能
        System.out.print(name + "的牌是:");
        for (int i = 0; i < arrayList.size(); i++) {
            if( i == arrayList.size()-1 ) {

                System.out.print(arrayList.get(i));
            }else{
                System.out.print(arrayList.get(i) + ",");
            }
        }
        System.out.println("共"+arrayList.size()+"张牌");
    }

}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

汪程序猿

就当请我吃顿饭

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

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

打赏作者

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

抵扣说明:

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

余额充值