创建一个关于card的包
public class Card {//创建card类
public String suit;//属性花色suit
public int num;//属性数字num
public Card(String suit,int num){//构造函数
this.num=num;
this.suit=suit;
}
public String toString(){
return String.format("[%s%d]",suit,num);
}
}
实现整幅卡牌
import java.util.*;
import java.util.concurrent.Callable;
/**
* Guity
*/
public class cardDemo {
//构建一副卡牌
public static List<Card> madeCard() {
String []suits={"♦","♥","♠","♥","小丑"};
List<Card> cards =new ArrayList<>(54);
//13个数字
for (int i=0;i<13;i++){
//4种花色
for (int j=0;j<4;j++){
String suit= suits[j];
Card card=new Card(suit,i);
cards.add(card);
}
}
//添加大王小王
Card card=new Card("小丑",1);
Card card2=new Card("小丑",2);
cards.add(card);
cards.add(card2);
return cards;
};
public static void main(String[] args) {
//新建套牌
List<Card>cards=madeCard();
System.out.println("创建的套牌:");
System.out.println(cards);
System.out.println("============================");
shuffle(cards);
System.out.println("打乱创建的套牌:");
System.out.println(cards);
System.out.println("============================");
//创建三个玩家,给三个人每个人发牌
List<List<Card>>peoples=new ArrayList<>();
peoples.add(new ArrayList<>());
peoples.add(new ArrayList<>());
peoples.add(new ArrayList<>());
Scratchcard(peoples,cards,3,5);
System.out.println("第一个玩家的手牌:");
System.out.println(peoples.get(0));
System.out.println("第二个玩家的手牌:");
System.out.println(peoples.get(1));
System.out.println("第三个玩家的手牌:");
System.out.println(peoples.get(2));
System.out.println("============================");
System.out.println(cards.size());//得到剩余的卡牌数量
System.out.println("显示剩余的卡牌");
System.out.println(cards);//剩余的卡牌
System.out.println("============================");
/*for (int i=0;i<3;i++){
for (int j=0;j<5;j++){
peoples.get(i).add(cards.remove(0));
}
}
System.out.println(peoples.get(0));*/
}
//交换牌组中的任意两张牌
public static void exchange(List<Card>cards ,int i ,int j){ ;
Card card=cards.get(i);
cards.set(i,cards.get(j));
cards.set(j,card);
}
//将牌组打乱
public static void shuffle(List<Card>cards){
Random random=new Random(45);
for (int i=0;i<cards.size();i++){
int j=random.nextInt(52);
exchange(cards,i,j);
}
}
//发牌方法
public static void Scratchcard(List<List<Card>>peoples,List<Card>cards,int i,int j){
for(int a=0;a<i;a++){
for (int b=0;b<j;b++){
Card card=cards.remove(0);
peoples.get(a).add(card);
}
}
}
}
实现如下: