1.创建一个Card类 来放我们所有的牌,一副牌总共54张,其中大小王两张
class Card {
public String num;
public String suit;
public String poker;
public Card(String poker) {
this.poker = poker;
}
public Card() {
}
public Card(String num, String suit) {
this.num = num;
this.suit = suit;
}
@Override
public String toString() {
if(poker == null)
return suit + " " + num ;
else
return poker;
}
}
2.创建一个CardDemo类来表示在这个类中实现扑克牌的一些方法
2.1这里我们用两个数组分别代表花色和数字(不包括大小王)
public static final String[] suits = {"♠","♥","♣","♦"};
public static final String[] nums = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
2.2接下来用一个方法来生成一副牌,这里用List<Card> 来接收所有的牌
public List<Card> buyCards() {
List<Card> cards = new ArrayList<>();
//按顺序生成一张牌 并加到cards中
for (int i = 0; i < 13; i++) {
for (int j = 0; j < 4; j++) {
Card card = new Card(nums[i],suits[j]);
cards.add(card);
}
}
//大小王单独加入
Card poker1 = new Card("小王");
Card poker2 = new Card("大王");
cards.add(poker1);
cards.add(poker2);
return cards;
}
到这里,一副新的牌就已经生成了.
3.洗牌
3.1洗牌这里选择用Random来生成一个随机数,来达到洗牌的目的
public List<Card> shuffle(List<Card> cards) {
Random random = new Random();
//从后往前开始交换牌 从而达到洗牌的目的
for (int i = cards.size() - 1; i > 0 ; i--) {
int index = random.nextInt(i);
swap(cards,index,i);
}
return cards;
}
3.2 swap() 因为这里的类型不一样 我们不能用像基本类型交换那样交换.
private void swap(List<Card> cards,int i,int j) {
Card tmp = cards.get(i);
cards.set(i,cards.get(j));
cards.set(j,tmp);
}
4.全部代码
package com.demo.List.ArrayList.pokerCard;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
class Card {
public String num;
public String suit;
public String poker;
public Card(String poker) {
this.poker = poker;
}
public Card() {
}
public Card(String num, String suit) {
this.num = num;
this.suit = suit;
}
@Override
public String toString() {
if(poker == null)
return suit + " " + num ;
else
return poker;
}
}
public class CardDemo{
public static final String[] suits = {"♠","♥","♣","♦"};
public static final String[] nums = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
public List<Card> buyCards() {
List<Card> cards = new ArrayList<>();
for (int i = 0; i < 13; i++) {
for (int j = 0; j < 4; j++) {
Card card = new Card(nums[i],suits[j]);
cards.add(card);
}
}
Card poker1 = new Card("小王");
Card poker2 = new Card("大王");
cards.add(poker1);
cards.add(poker2);
return cards;
}
public List<Card> shuffle(List<Card> cards) {
Random random = new Random();
for (int i = cards.size() - 1; i > 0 ; i--) {
int index = random.nextInt(i);
swap(cards,index,i);
}
return cards;
}
private void swap(List<Card> cards,int i,int j) {
Card tmp = cards.get(i);
cards.set(i,cards.get(j));
cards.set(j,tmp);
}
}