java_扑克牌小程序

2019-04-19  本文已影响0人  王康健_0124

洗牌:数组重新排序 Collections.shuffle(cards);
Card:牌的属性
TestCard:测试
Player:玩家,发牌

import java.util.Objects;
public class Card {
    public static final String[] SUITE_NAME = {"红桃","方块","梅花",
            "黑桃",""};
    public static final String[] RANK_NAME = {"3","4","5","6","7",
            "8","9","10","J","Q","K","A","2","小王","大王"};
    public static final int HEART = 0;
    public static final int DIAMOND = 1;
    public static final int CLUB = 2;
    public static final int SPADE = 3;
    public static final int JOKER = 4;
    public static final int THREE = 0;
    public static final int FOUR = 1;
    public static final int FIVE = 2;
    public static final int SIX = 3;
    public static final int SEVEN = 4;
    public static final int EIGHT = 5;
    public static final int NINE = 6;
    public static final int TEN = 7;
    public static final int JACK = 8;
    public static final int QUEUE = 9;
    public static final int KING = 10;
    public static final int ACE = 11;
    public static final int TWO = 12;
    public static final int BLACK = 13;
    public static final int COLOR = 14;

    private int suit;  //花色
    private int rank;  //点数
    public Card() {}
    public Card(int suit, int rank) {//构造方法
        this.suit = suit;
        this.rank = rank;
    }

    @Override
    public String toString() {
        return SUITE_NAME[suit]+RANK_NAME[rank];
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Card card = (Card) o;
        return suit == card.suit &&
                rank == card.rank;
    }

    @Override
    public int hashCode() {

        return Objects.hash(suit, rank);
    }

    public int getSuit() {
        return suit;
    }

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

    public int getRank() {
        return rank;
    }

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

//Player  玩家类
import java.util.Arrays;
public class Player {
    private int id;//玩家id属性
    private String name;//玩家姓名
    private Card[] cards;//玩家手牌数组//构造方法,花色点数

    public Player(int id, String name) {
        this.id = id;
        this.name = name;
        this.cards = new Card[]{};
    }
    public void addCard(Card c) {
        cards = Arrays.copyOf(cards, cards.length + 1);//数组扩容,手牌长度=手牌长度+1
        cards[cards.length - 1] = c;//把牌放进扩容后的数组中
    }

    @Override
    public String toString() {
        return id+","+name+":"+Arrays.toString(cards);
    }
}

package cn.besttest.day4_homework;
import java.util.*;
public class TestCard {
    public static void main(String[] args) {
        List<Card> cards = new ArrayList<>();//创建一个cards数组,数组类型Crad,(花色,点数)
        for (int rank = Card.THREE; rank <= Card.TWO; rank++) { //创建一副扑克牌,THREE=0,TWO=12   小3-2的位数
            cards.add(new Card(Card.HEART, rank));//添加颜色和对应点数  红桃
            cards.add(new Card(Card.DIAMOND, rank));//添加颜色和对应点数  方块
            cards.add(new Card(Card.CLUB, rank));//添加颜色和对应点数  梅花
            cards.add(new Card(Card.SPADE, rank));//添加颜色和对应点数  黑桃
        }
        cards.add(new Card(Card.JOKER,Card.BLACK));//添加小王
        cards.add(new Card(Card.JOKER,Card.COLOR));//添加大王
        System.out.println(cards);
        //洗牌
//        Random ran=new Random();
//        for (int i=cards.size()-1;i>0;i--){//到0的话就没有换的了,所以要留一个
//            int index=ran.nextInt(i);
//            Card c=cards.get(index);
//            Card temp=cards.get(i);
//            cards.set(i,c);
//            cards.set(index,temp);
//        }
        Collections.shuffle(cards);// 把一个数组中数据重写排列
        System.out.println(cards);
        Player[] players={new Player(1,"碧瑶"),new Player(2,"陆雪琪"),new Player(3,"张小凡")};
        for (int i=0;i<cards.size()-3;i++){
            Card c=cards.get(i);
            players[i%players.length].addCard(c);
        }
        System.out.println(players[0]);
        System.out.println(players[1]);
        System.out.println(players[2]);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读