在很久很久以前,自己没事写的一个小练习。
封装了一个普扑克实体和一副牌,然后封装了一些方法,如:洗牌、抽牌等等。
使用的Java原生代码,没有任何第三方库,如果你想玩扑克,可以自行拷贝代码测试。
java/**
 * @class_name Poke
 * @effect 封装单张扑克牌
 * @author Mr hu
 * @date 2018年11月10日 下午7:52:07
 */
public class Poke {
    // 用于花色排序
	private int color;
	private String colorname;
    // 用于点数排序
	private int point;
	private String pointname;
	public int getColor() {
		return color;
	}
	public void setColor(int color) {
		this.color = color;
	}
	public String getColorname() {
		return colorname;
	}
	public void setColorname(String colorname) {
		this.colorname = colorname;
	}
	public int getPoint() {
		return point;
	}
	public void setPoint(int point) {
		this.point = point;
	}
	public String getPointname() {
		return pointname;
	}
	public void setPointname(String pointname) {
		this.pointname = pointname;
	}
    // 编写带参构造方法
	public Poke(int color, String colorname, int point, String pointname) {
		this.color = color;
		this.colorname = colorname;
		this.point = point;
		this.pointname = pointname;
	}
	@Override
	public String toString() {
		return "["+colorname+":"+pointname+"]";
	}
}
javaimport java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
 * @class_name	PokeBehavior
 * @effect  封装一副扑克牌的行为
 * @author	Mr  hu
 * @date	2018年11月10日 下午10:29:16
 */
public class PokeBehavior {
	/*
	 * 编写生成一副扑克的方法
	 */
	public static List<Poke> generatePoke() {
        // 创建Poke的List集合,用于存放一副扑克
		List<Poke> pokelist = new ArrayList<Poke>();
		// 创建四种花色从A—K各13张,共52张扑克,并添加到Poke集合中
		for (int i = 1; i <= 4; i++) {
			for (int j = 1; j <= 13; j++) {
				String colorname = null;
				String pointname = null;
				// 1 ♡ | 2 ♢ | 3 ♤ | 4 ♣ 
				switch (i) {
					case 1:		colorname = "♥";break;
					case 2:		colorname = "♢";break;
					case 3:		colorname = "♤";break;
					case 4:		colorname = "♣";break;
				}
				// 1 A | …… | 11 J | 12 Q | 13 K
				switch (j) {
					case 1:		pointname = "A";	break;
					case 2:		pointname = "2";	break;
					case 3:		pointname = "3";	break;
					case 4:		pointname = "4";	break;
					case 5:		pointname = "5";	break;
					case 6:		pointname = "6";	break;
					case 7:		pointname = "7";	break;
					case 8:		pointname = "8";	break;
					case 9:		pointname = "9";	break;
					case 10:	pointname = "10";	break;
					case 11:	pointname = "J";	break;
					case 12:	pointname = "Q";	break;
					case 13:	pointname = "K";	break;
				}
				Poke poke = new Poke(i, colorname, j, pointname);
				pokelist.add(poke);
			}
		}
		// 创建大小王扑克并添加到Poke集合中
		Poke pokemin = new Poke(5, "小", 14, "小王");
		Poke pokemax = new Poke(6, "大", 15, "大王");
		pokelist.add(pokemin);
		pokelist.add(pokemax);
		
		return pokelist;
	}
	
	/*
	 * 编写打乱list集合(洗牌)的方法
	 */
	public static List<Poke> disruptPoke(List<Poke> pokelist) {
		Collections.shuffle(pokelist);
		return pokelist;
	}
	
	/*
	 * 编写按点数大小排序的方法
	 */
	public static List<Poke> sortSize(List<Poke> pokelist) {
		//按照Poke的点数进行升序排列
		Collections.sort(pokelist, new Comparator<Poke>() {
			public int compare(Poke p1, Poke p2) {
                if(p1.getPoint() > p2.getPoint()){
                    return 1;
                }
                if(p1.getPoint() == p2.getPoint()){
                    return 0;
                }
                return -1;
            }
		});
		return pokelist;
	}
	
	/*
	 * 编写按花色排序的方法
	 */
	public static List<Poke> sortColor(List<Poke> pokelist) {
		//按照Poke的花色进行升序排列(1 ♡ | 2 ♢ | 3 ♤ | 4 ♣ )
		Collections.sort(pokelist, new Comparator<Poke>() {
			public int compare(Poke p1, Poke p2) {
                if(p1.getColor() > p2.getColor()){
                    return 1;
                }
                if(p1.getColor() == p2.getColor()){
                    return 0;
                }
                return -1;
            }
		});
		return pokelist;
	}
	
	/*
	 * 编写既按照花色又按照大小排序(A2345……A2345……)的方法
     * 分析后可知,先大小再花色即可
     * 若先花色,再大小,就会变成(AAAA 2222 3333 ……)的形式
	 */
	public static List<Poke> sortColorAndSize(List<Poke> pokelist) {
		//按照Poke的花色进行升序排列
		Collections.sort(pokelist, new Comparator<Poke>() {
			public int compare(Poke p1, Poke p2) {
                if(p1.getColor() > p2.getColor()){
                    return 1;
                }
                if(p1.getColor() == p2.getColor()){
                    return 0;
                }
                return -1;
            }
		});
        // 调用编写好的花色排序方法
		PokeBehavior.sortColor(pokelist);
		return pokelist;
	}
	
	/*
	 * 编写抽取随机抽取一张扑克的方法
	 */
	public static Poke getOnePoke(List<Poke> pokelist) {
		Poke poke=pokelist.get((int) (Math.random()*53));
		return poke;
	}
}
javaimport java.util.List;
/**
 * @class_name	PokeMain
 * @effect 测试
 * @author	Mr  hu
 * @date	2018年11月10日 下午10:28:45
 */
public class PokeMain {
    // 生成一副扑克
	public static List<Poke> pokelist = PokeBehavior.generatePoke();
	public static void main(String[] args) {
		// 输出初始状态poke
		System.out.println("原生poke:");
		for (Poke poke : pokelist) {
			System.out.print(poke.toString());
			int index = pokelist.indexOf(poke);
			if (index == 12 || index == 25 || index == 38 || index == 51) {
				System.out.println();
			}
		}
		System.out.println();
		// 测试打乱顺序
		pokelist = PokeBehavior.disruptPoke(pokelist);
		System.out.println("打乱顺序poke:");
		for (Poke poke : pokelist) {
			System.out.print(poke.toString());
			int index = pokelist.indexOf(poke);
			if (index == 12 || index == 25 || index == 38 || index == 51) {
				System.out.println();
			}
		}
		System.out.println();
		// 测试按花色排序
		pokelist = PokeBehavior.sortColor(pokelist);
		System.out.println("按花色排序poke:");
		for (Poke poke : pokelist) {
			System.out.print(poke.toString());
			int index = pokelist.indexOf(poke);
			if (index == 12 || index == 25 || index == 38 || index == 51) {
				System.out.println();
			}
		}
		System.out.println();
		// 测试按大小排序(先打乱上一步的花色排序)
		pokelist = PokeBehavior.disruptPoke(pokelist);
		pokelist = PokeBehavior.sortSize(pokelist);
		System.out.println("按大小排序poke:");
		for (Poke poke : pokelist) {
			System.out.print(poke.toString());
			int index = pokelist.indexOf(poke);
			if (index == 3 || index == 7 || index == 11 || index == 15 || index == 19 || 
                            index == 23 || index == 27|| index == 31 || index == 35 || index == 39 || 
                            index == 43 || index == 47 || index == 51) {
				System.out.println();
			}
		}
		System.out.println();
		// 测试既按大小又按花色排序
		pokelist = PokeBehavior.sortColorAndSize(pokelist);
		System.out.println("既按大小又按花色排序poke:");
		for (Poke poke : pokelist) {
			System.out.print(poke.toString());
			int index = pokelist.indexOf(poke);
			if (index == 12 || index == 25 || index == 38 || index == 51) {
				System.out.println();
			}
		}
		System.out.println();
		System.out.println("随机抽取一个poke:");
		System.out.println(PokeBehavior.getOnePoke(pokelist).toString());
	}
}
原生poke: [♥:A][♥:2][♥:3][♥:4][♥:5][♥:6][♥:7][♥:8][♥:9][♥:10][♥:J][♥:Q][♥:K] [♢:A][♢:2][♢:3][♢:4][♢:5][♢:6][♢:7][♢:8][♢:9][♢:10][♢:J][♢:Q][♢:K] [♤:A][♤:2][♤:3][♤:4][♤:5][♤:6][♤:7][♤:8][♤:9][♤:10][♤:J][♤:Q][♤:K] [♣:A][♣:2][♣:3][♣:4][♣:5][♣:6][♣:7][♣:8][♣:9][♣:10][♣:J][♣:Q][♣:K] [小:小王][大:大王] 打乱顺序poke: [♤:9][♤:A][♣:A][♢:10][♣:8][♢:7][♢:6][♥:7][♢:9][♣:K][♤:6][♤:3][♢:8] [♥:3][♤:8][♣:J][♢:4][♣:2][♢:A][♢:5][♢:K][♣:9][♥:10][♤:7][♢:Q][♥:K] [♤:5][♥:9][♣:6][♣:3][♥:6][小:小王][♥:8][♣:7][♥:2][♢:2][大:大王][♤:K][♣:10] [♤:J][♥:J][♥:4][♣:5][♢:J][♤:2][♥:Q][♥:A][♤:4][♢:3][♣:4][♥:5][♤:Q] [♣:Q][♤:10] 按花色排序poke: [♥:7][♥:3][♥:10][♥:K][♥:9][♥:6][♥:8][♥:2][♥:J][♥:4][♥:Q][♥:A][♥:5] [♢:10][♢:7][♢:6][♢:9][♢:8][♢:4][♢:A][♢:5][♢:K][♢:Q][♢:2][♢:J][♢:3] [♤:9][♤:A][♤:6][♤:3][♤:8][♤:7][♤:5][♤:K][♤:J][♤:2][♤:4][♤:Q][♤:10] [♣:A][♣:8][♣:K][♣:J][♣:2][♣:9][♣:6][♣:3][♣:7][♣:10][♣:5][♣:4][♣:Q] [小:小王][大:大王] 按大小排序poke: [♥:A][♣:A][♤:A][♢:A] [♤:2][♥:2][♣:2][♢:2] [♣:3][♤:3][♢:3][♥:3] [♤:4][♣:4][♢:4][♥:4] [♣:5][♤:5][♥:5][♢:5] [♣:6][♥:6][♤:6][♢:6] [♤:7][♣:7][♢:7][♥:7] [♥:8][♤:8][♢:8][♣:8] [♤:9][♢:9][♥:9][♣:9] [♥:10][♢:10][♣:10][♤:10] [♤:J][♥:J][♣:J][♢:J] [♤:Q][♣:Q][♥:Q][♢:Q] [♤:K][♣:K][♥:K][♢:K] [小:小王][大:大王] 既按大小又按花色排序poke: [♥:A][♥:2][♥:3][♥:4][♥:5][♥:6][♥:7][♥:8][♥:9][♥:10][♥:J][♥:Q][♥:K] [♢:A][♢:2][♢:3][♢:4][♢:5][♢:6][♢:7][♢:8][♢:9][♢:10][♢:J][♢:Q][♢:K] [♤:A][♤:2][♤:3][♤:4][♤:5][♤:6][♤:7][♤:8][♤:9][♤:10][♤:J][♤:Q][♤:K] [♣:A][♣:2][♣:3][♣:4][♣:5][♣:6][♣:7][♣:8][♣:9][♣:10][♣:J][♣:Q][♣:K] [小:小王][大:大王] 随机抽取一个poke: [♥:4]
建站因为热爱,生活需要Money,请屏幕前的大佬动动您发财的小手,点击一次以示鼓励,祝您生活愉快!
PS:就目前的访问量,即便每个访客都点一次广告,收入也不足以支付运营成本。
如果看不到广告,可能是网络原因或被拦截了,那就算了吧。再次祝您生活愉快~~
本文作者:DingDangDog
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!