天天看點

Java應用:模拟鬥地主洗牌和發牌以及看牌排序

模拟鬥地主洗牌和發牌以及看牌排序:

分析:

     1,買一副撲克,其實就是自己建立一個集合對象,将撲克牌存儲進去

        String[] num = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};

        String[] color = {"紅桃","黑桃","方片","梅花"};

        組成字元串54個字元串,添加大王和小王,可以采用ArrayList實作存儲的功能

    2,洗牌:Collection.shuff()

    3,發牌:循環 第一個發完 第二個發完 第三個發完

    4,看牌:

        (1)列印每個數組的内容(要求排序),ArrayList也可以排序的

        (2)可以采用TreeSet 對排進行排序實作

代碼:

一個包兩個類:

PokeTest.java:

package day_015.poke;

/*
 * 模拟鬥地主洗牌和發牌以及看牌排序:

分析:
 	1,買一副撲克,其實就是自己建立一個集合對象,将撲克牌存儲進去
		String[] num = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
		String[] color = {"紅桃","黑桃","方片","梅花"};
		組成字元串54個字元串,添加大王和小王,可以采用ArrayList實作存儲的功能
	2,洗牌:Collection.shuff()
	3,發牌:循環 第一個發完 第二個發完 第三個發完
	4,看牌:
		(1)列印每個數組的内容(要求排序),ArrayList也可以排序的
		(2)可以采用TreeSet 對排進行排序實作
 */

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.TreeSet;

public class PokeTest {

	public static void main(String[] args) {

		List<Poke> al = new ArrayList<>();
		String[] num = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2" };
		String[] color = { "方塊", "紅桃", "梅花", "黑桃" };
		String[] king = { "小王", "大王" };
		al.add(new Poke(king[1], 54));
		al.add(new Poke(king[0], 53));
		for (int i = 52; i > 0;) {
			for (int j = 3; j >= 0; j--) {
				for (int k = 12; k >= 0; k--) {
					al.add(new Poke(color[j] + num[k], i));
					i--;
				}
			}
		}
		// 好牌
		System.out.println("打亂前:");
		for (Poke p : al) {
			System.out.println(p);
		}
		// 洗牌
		Collections.shuffle(al);
		System.out.println("打亂後:");
		for (Poke p : al) {
			System.out.println(p);
		}
		// 發牌
		System.out.println("發牌:");
		System.out.println("第一個:");
		for (int i = 0; i < 17; i++) {
			System.out.println(al.get(i));
		}
		System.out.println("第二個:");
		for (int i = 17; i < 34; i++) {
			System.out.println(al.get(i));
		}
		System.out.println("第三個:");
		for (int i = 34; i < 51; i++) {
			System.out.println(al.get(i));
		}
		System.out.println("地主牌:");
		for (int i = 51; i < 54; i++) {
			System.out.println(al.get(i));
		}
		// 看牌
		TreeSet<Poke> tS = new TreeSet<>(new Comparator<Poke>() {

			@Override
			public int compare(Poke o1, Poke o2) {

				return o1.getWeight() < o2.getWeight() ? 1 : -1;
			}

		});
		System.out.println("看牌(排好順序):");
		List<Poke> alTemp = new ArrayList<>();

		// 排序第一個人
		System.out.println("第一個:");
		for (int i = 0; i < 17; i++) {
			alTemp.add(al.get(i));
		}
		tS.addAll(alTemp);
		for (Poke p : tS) {
			System.out.println(p);
		}
		alTemp.clear();
		tS.clear();

		// 排序第二個人
		System.out.println("第二個:");
		for (int i = 17; i < 34; i++) {
			alTemp.add(al.get(i));
		}
		tS.addAll(alTemp);
		for (Poke p : tS) {
			System.out.println(p);
		}
		alTemp.clear();
		tS.clear();

		// 排序第三個人
		System.out.println("第三個:");
		for (int i = 34; i < 51; i++) {
			alTemp.add(al.get(i));
		}
		tS.addAll(alTemp);
		for (Poke p : tS) {
			System.out.println(p);
		}
		alTemp.clear();
		tS.clear();

		// 排序地主牌
		System.out.println("地主牌:");
		for (int i = 51; i < 54; i++) {
			alTemp.add(al.get(i));
		}
		tS.addAll(alTemp);
		for (Poke p : tS) {
			System.out.println(p);
		}
		alTemp.clear();
		tS.clear();

	}

}
           

Poke.java:

package day_015.poke;

public class Poke {

	private String poke;
	private int weight;

	public String getPoke() {
		return poke;
	}

	public void setPoke(String poke) {
		this.poke = poke;
	}

	public int getWeight() {
		return weight;
	}

	public void setWeight(int weight) {
		this.weight = weight;
	}

	public Poke(String poke, int weight) {
		super();
		this.poke = poke;
		this.weight = weight;
	}

	@Override
	public String toString() {
		return "Poke:" + poke + ", weight:" + weight;
	}

}
           

繼續閱讀