Java中扑克牌的简单构建

import java.util.*;

public class Poker {

    static class Card {
        public String suit;//花色
        public String num;//数字值

        public Card(String suit, String num) {
            this.suit = suit;
            this.num = num;
        }

        @Override
        public String toString() {
            return "("+ suit + " " + num +")";
        }
    }

    //构建一副牌
    public static List<Card> buyPoker() {
        String[] suits = {"♥","♣","♦","♠"};

        List<Card> poker = new ArrayList<>();
        for (int i = 0; i < 4; i++) {
            poker.add(new Card(suits[i],"A"));
            for (int j = 2; j < 11 ; j++) {
                Card card = new Card(suits[i],String.valueOf(j));
                poker.add(card);
            }
            poker.add(new Card(suits[i],"j"));
            poker.add(new Card(suits[i],"Q"));
            poker.add(new Card(suits[i],"K"));
        }
        return poker;
    }

    public static void shuffle(List<Card> poker) {
        Random random = new Random();
        for(int i = poker.size() - 1; i > 0; i--) {
            int j = random.nextInt(i);
            swap(poker,i,j);
        }
    }

    private static void swap(List<Card> card ,int i ,int j) {
        Card tmp = card.get(i);
        card.set(i,card.get(j));
        card.set(j,tmp);
    }


    public static void main(String[] args) {
        List<Card> poker = buyPoker();
        System.out.println(poker);
        //洗牌
        //shuffle(poker);//自己构建的函数洗牌
        Collections.shuffle(poker);//库函数洗牌
        System.out.println("=======================");
        System.out.println(poker);

        ArrayList<ArrayList<Card>> players = new ArrayList<>();

        ArrayList<Card> p1 = new ArrayList<>();//三个玩家
        ArrayList<Card> p2 = new ArrayList<>();
        ArrayList<Card> p3 = new ArrayList<>();

        players.add(p1);//加入到这个顺序表中
        players.add(p2);
        players.add(p3);

        for(int i = 0; i < 5; i++) {//一人发发五张牌
            for (int j = 0; j < 3; j++) {//三个玩家
                Card firstCard = poker.remove(0);//去除牌顶上的牌
                players.get(j).add(firstCard);//第j个玩家获得牌
            }
        }

        System.out.println();
        System.out.print("玩家1:");
        System.out.println(players.get(0));
        System.out.print("玩家2:");
        System.out.println(players.get(1));
        System.out.print("玩家3:");
        System.out.println(players.get(2));

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
* Game 类 * 功能:整个游戏:开始游戏 -> 初始牌 -> 洗牌 -> 发牌 -> 排序 -> 比较大小 -> 游戏结果 * 游戏说明: * 1.创建一副扑克牌,不考虑大小王 * 2.创建两名玩家,玩家至少要有ID、姓名、手牌等属性,手牌为扑克牌的集合 * 3.洗牌,将之前创建的扑克牌顺序打乱 * 4.发牌,将洗牌之后的扑克牌集合,从第一张开始,发给两名玩家,按照一人一张的方式,每人发两张 * 5.开始游戏,比大小,大小相同比花色 * * PockerCard 类 * 功能:扑克牌的核心类 包括创建角色、创建牌、显示牌、洗牌、比较牌、排序牌等 * 属性:List cards 整幅扑克牌的集合 、 People[] peoples 角色 * 方法: public PockerCard() //无参构造函数: 创建牌的集合、创建两个角色对象 * public void initializeCard() //创建整幅扑克牌 * public void showCard() //显示单支牌的花色和点数 * public void refreshCard() //洗牌 从第一支牌开始从所有牌随机取一只与之交换 * public void addPeopleInfo() //添加玩家的基本信息 * public void dealCard() //发牌 从开始分别给A B发牌 每人两支 * public void showPeopleCard() //显示两个角色自己获得的牌 * public void sortCard() //将每个角色自己的牌按从小到大排序 * public void comparePeopleCard() //比较角色的牌 * * SingleCard类 实现Comparable接口 * 功能:产生单支牌 * 属性:ID、color、keyID数组、keyColor数组 * 方法:public SingleCard(){} //无参构造函数 * public SingleCard(String ID,String color) //有参构造函数 * @Override public int compareTo(SingleCard o) //比较当前牌与SingleCard o的牌的大小 * * People类 * 功能:产生一个角色 * 属性:ID、Name、和、存储牌的List集合。 * 方法: public People() //初始化存储牌的List集合; *

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值