分为三部分,首先得到随机的牌,然后将牌发给四个人,再然后就是洗牌再发牌
第一步声明要用到的东西
private static List<Card> cardList = new ArrayList<>();
private static String[] cardCategory = new String[]{"黑桃", "红桃", "方块", "梅花"};
private static String[] cards = new String[]{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
随机生成所有扑克牌
/**
* 随机生成所有扑克牌
*/
public static void start(){
Random r1 = new Random();
int c = 0;
List<String> stringList = new ArrayList<>();
while (c < 13){
int index = r1.nextInt(13);
while (stringList.contains(cards[index])) {
index = r1.nextInt(13);
}
stringList.add(cards[index]);
c++;
}
c = 0;
List<String> cList = new ArrayList<>();
int index;
while (c < 4){
index = r1.nextInt(4);
while (cList.contains(cardCategory[index])) {
index = r1.nextInt(4);
}
cList.add(cardCategory[index]);
c++;
}
List<Card> cardList1 = new ArrayList<>();
for (String s : stringList) {
for (String s1 : cList) {
Card card = new Card();
card.setCategory(s1);
card.setNamed(s);
cardList1.add(card);
}
}
c = 0;
while (c < 52){
index = r1.nextInt(52);
while (cardList.contains(cardList1.get(index))) {
index = r1.nextInt(52);
}
cardList.add(cardList1.get(index));
c++;
}
}
发牌
/**
* 开始发牌
*/
public static void send(){
List<Card> person1 = new ArrayList<>();
List<Card> person2 = new ArrayList<>();
List<Card> person3 = new ArrayList<>();
List<Card> person4 = new ArrayList<>();
List<List<Card>> total = new ArrayList<>();
total.add(person1);
total.add(person2);
total.add(person3);
total.add(person4);
Random random = new Random();
for (Card card : cardList) {
List<Card> person = total.get(random.nextInt(4));
while (person.size() == 13){
person = total.get(random.nextInt(4));
}
person.add(card);
}
System.out.println(person1);
System.out.println(person2);
System.out.println(person3);
System.out.println(person4);
}
洗牌
/**
* 洗牌
*/
public static void reRandomCard(){
cardList.clear();
start();
}
Card类
public class Card {
private String named;
private String category;
Card(){}
/**
* 用来检验是否存在相同的类
* @param card 要比较的
* @return 等于2 则是相同的,否则为不同的
*/
public boolean isEquals(Card card){
int i = 0;
if (card.getCategory().equals(this.category))
i++;
if (card.getNamed().equals(this.named))
i++;
return i == 2;
}
public String getNamed() {
return named;
}
public void setNamed(String named) {
this.named = named;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
@Override
public String toString() {
return named + " " + category;
}
}
以上就是最简单的方法了