用Java代码实现纸牌分发的任务,这是很久以前做到一个小程序,现在贴出来,话不多说,直接上代码:
package com.lin.card;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.TreeSet;
public class Card implements Comparable<Card>{
//扑克牌的点数
Number n;
//扑克牌的花色
Huase h;
//扑克牌的值,表示一张扑克牌的大小
int value;
//有参数的构造方法
public Card(Number n, Huase h) {
super();
this.n = n;
this.h = h;
value=n.ordinal()*10+h.ordinal();
}
@Override
public int compareTo(Card c) {
if(this.value>c.value)
return 1;
else if(this.value<c.value)
return -1;
else return 0;
}
//toString方法
@Override
public String toString() {
String str=null;
switch (h) {
case DIAMOND: str="方块"; break;
case CLUB: str="梅花";break;
case HEART: str="红桃";break;
case SPADE:str="黑桃";break;
}
switch(n){
case TWO:str+="2";break;
case THREE:str+="3";break;
case FOUR:str+="4";break;
case FIVE:str+="5";break;
case SIX:str+="6";break;
case SEVEN:str+="7";break;
case EIGHT:str+="8";break;
case NINE:str+="9";break;
case TEN:str+="10";break;
case JACK:str+="J";break;
case QUEEN:str+="Q";break;
case KING:str+="K";break;
case ACE:str+="A";break;
}
return str;
}
/*
* 定义一个静态方法display
* 实现为多人随机发牌的功能
* */
public static TreeSet<Card>[] display(int players){
//存放所有扑克牌的集合
LinkedList<Card> allCards=new LinkedList<Card>();
for(Number num:Number.values()){
for(Huase h:Huase.values()){
allCards.add(new Card(num, h));
}
}
//存放每一个玩家手里的扑克牌
TreeSet<Card> cards[]=new TreeSet[players+1];
int i=0;
//循环随机发放每一个玩家的扑克牌并保存起来,同时把已经发出去的牌从allCards删掉
for(;i<players;i++){
cards[i]=new TreeSet<Card>();
for(int j=0;j<52/players;j++){
int k=(int) (Math.random()*allCards.size());
cards[i].add(allCards.remove(k));
}
}
return cards;
}
public static void main(String[] args) {
while(true){
System.out.print("玩家人数:");
Scanner sc=new Scanner(System.in);
int k=sc.nextInt();
if(52%k!=0){
System.out.println("不能平均为所给的人数发牌!!!请重新安排人数!扑克牌为52张!!");
}else{
TreeSet<Card> cards[]=Card.display(k);
//循环打印每一个玩家手里的扑克牌
for (int i = 0; i < cards.length-1; i++) {
System.out.println("\n第"+(i+1)+"人手里的牌:");
for(Card c:cards[i]){
System.out.print(c+" ");
}
}
System.out.println();
}
System.out.println();
}
}
}
/*
* 枚举类型,代表扑克牌的点数
* */
enum Number{
TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,JACK,QUEEN,KING,ACE
}
/*
* 枚举类型,代表扑克牌的花色
* */
enum Huase{
DIAMOND,CLUB,HEART,SPADE
}
效果图: