数据结构-通过顺序表实现纸牌游戏

通过顺序表实现纸牌游戏(发牌,洗牌,收牌)

实现步骤

1.创建一个Card类,属性为花色和数字,构造方法,并重写toString类,以便后续打印;

2.新建一个CardGame类,新建一个链表用来存放整副牌;

3.通过Collections.shuffle(cardList);来“洗牌”;

4.通过remove方法,删除牌中的最后一张牌(尾删),再通过add方法尾插到每一个玩家的手中,模拟随机发牌的过程;

5.通过调用get方法获得玩家手中指定位置的牌;

6.通过addAll方法将玩家手中的牌重新放入牌堆;

7.最后通过clear方法清空玩家手中的牌。

完整代码

public class Card {
    public String suit; // 花色
    public int rank;    // 1 - 13

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

    @Override
    public String toString() {
        String rankS = String.valueOf(rank);
        if(rank == 1){
            rankS = "A";
        }else if(rank == 11){
            rankS = "J";
        }else if(rank == 12){
            rankS = "Q";
        }else if(rank == 13){
            rankS = "K";
        }
        return String.format("{%s %s}",suit,rankS);
    }
}
public class CardGame {
    public static void main(String[] args) {
        //构建一个空的链表
        ArrayList cardList = new ArrayList<>(52);

        String[] suits = {"♥","♠","♦","♣"};
        for(String suit: suits){    //新建一个suit 数组,保存suits数组中的数据
            for (int rank = 1; rank <= 13 ; rank++) {
                Card card = new Card(suit,rank);    //构造一副牌
                //将构建的牌尾插到链表中
                cardList.add(card);
            }
        }
        //System.out.print(cardList);  //打印出一副牌

        //洗牌
        Collections.shuffle(cardList);
        //System.out.print(cardList);

        //假设有五名玩家,每位玩家依次抽取牌,每人一共抓三张
        List player1 = new ArrayList<>();
        List player2 = new ArrayList<>();
        List player3 = new ArrayList<>();
        List player4 = new ArrayList<>();
        List player5 = new ArrayList<>();
        for (int i = 0; i < 3; i++) {   //抽取三次牌
            Card card;  //拿出一副牌
            //抓牌
            card = cardList.remove(cardList.size()-1); //从乱序的牌中尾删掉最后一张,模拟抽牌的过程
            //玩家1抽取
            player1.add(card);

            card = cardList.remove(cardList.size()-1);
            player2.add(card);  //玩家2抽取

            card = cardList.remove(cardList.size()-1);
            player3.add(card);  //玩家3抽取

            card = cardList.remove(cardList.size()-1);
            player4.add(card);  //玩家4抽取

            card = cardList.remove(cardList.size()-1);
            player5.add(card);  //玩家5抽取
        }

        //打印出每个玩家手中的三张牌
//        System.out.println(player1);
//        System.out.println(player2);
//        System.out.println(player3);
//        System.out.println(player4);
//        System.out.println(player5);

        System.out.println(player1.get(1)); //得到玩家一手中的第2张牌


        cardList.addAll(player1);   //将玩家1手里的牌放入牌堆
        player1.clear();            //清空玩家1手中的牌
        //。。。


    }
}

你可能感兴趣的:(数据结构从0开始,游戏,java)