洗牌:数组重新排序 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]);
}
}
网友评论