扑克牌(Java)

用java实现一副牌,完成创建/洗牌/发牌功能

  1. 先创建一个Card类(这就是一副牌)
    这副牌包含两种属性 rank(点数) & suit(花色)
class Card {
    private String rank;//点数
    private String suit;//花色

  1. 用IDEA里的Constructor/toString/Getter and Setter完成前36行代码
    public Card(String rank, String suit) {
        this.rank = rank;
        this.suit = suit;
    }

    public String getRank() {
        return rank;
    }

    public void setRank(String rank) {
        this.rank = rank;
    }

    public String getSuit() {
        return suit;
    }

    public void setSuit(String suit) {
        this.suit = suit;
    }

    @Override
    public String toString() {
        return "[" + this.suit + this.rank + "]";
    }
}
  1. 创建一副牌
List<Card> poker = buyPoker();
  1. 写buyPoker方法

首先创建

List<Card> poker = new ArrayList<>();

一副牌有四种花色,于是创建一个数组表示这四种花色

String[] suits = {"♥","♠","♣","♦"};

用for循环完成这副牌的组建

  1. 洗牌
Collections.shuffle(poker);
  1. 发牌
    假设有三名玩家,每人发五张牌
    每个玩家就是一个List,
    把每个人的牌放进这个List中
    把这三名玩家的信息再放进一个List中
for (int i = 0; i < 4; i++) {
            for (int j = 2; j <= 10; j++) {
                //"" + j 就得到了一个字符串
                poker.add(new Card("" + j,suits[i]));
            }
            poker.add(new Card("J",suits[i]));
            poker.add(new Card("Q",suits[i]));
            poker.add(new Card("K",suits[i]));
            poker.add(new Card("A",suits[i]));
        }

完整代码如下:

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

class Card {
    private String rank;//点数
    private String suit;//花色

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

    public String getRank() {
        return rank;
    }

    public void setRank(String rank) {
        this.rank = rank;
    }

    public String getSuit() {
        return suit;
    }

    public void setSuit(String suit) {
        this.suit = suit;
    }

    @Override
    public String toString() {
        return "[" + this.suit + this.rank + "]";
    }
}

public class Poker {
    public static void main(String[] args) {
        //1.创建一副牌
        List<Card> poker = buyPoker();
        //2.洗牌
        Collections.shuffle(poker);
        //3.发牌,假设三个人,每人发五张牌
        //每个玩家就是一个List,就可以把每个人的牌放到这个List中
        //可以把这多个玩家的信息再放到一个List中
        //players这就表示所有的玩家手牌
        //每个元素就是一个玩家的所有手牌(一个List)
        List<List<Card>> players = new ArrayList<>();
        players.add(new ArrayList<Card>());
        players.add(new ArrayList<Card>());
        players.add(new ArrayList<Card>());

        //i-牌的编号
        //j-玩家编号
        for (int i = 0;i < 5;i++){
            for (int j = 0; j < 3; j++) {
                List<Card> player = players.get(j);
                Card card = poker.remove(0);
                player.add(card);
            }
        }

        //到了这一步,发牌结束,玩家可以查看手牌了
        for (int i = 0; i < 3; i++) {
            System.out.println("玩家" + i + ":" + players.get(i));
        }
    }

    private static List<Card> buyPoker() {
        List<Card> poker = new ArrayList<>();

        String[] suits = {"♥","♠","♣","♦"};

        //i-花色
        //j-点数
        for (int i = 0; i < 4; i++) {
            for (int j = 2; j <= 10; j++) {
                //"" + j 就得到了一个字符串
                poker.add(new Card("" + j,suits[i]));
            }
            poker.add(new Card("J",suits[i]));
            poker.add(new Card("Q",suits[i]));
            poker.add(new Card("K",suits[i]));
            poker.add(new Card("A",suits[i]));
        }
        return poker;
    }
}
原创文章 11 获赞 6 访问量 303

猜你喜欢

转载自blog.csdn.net/weixin_45122262/article/details/105611282