Java 扑克牌游戏:Pai 类实现及测试

本代码示例展示了如何用 Java 创建一个名为 'Pai' 的类,用于表示一副扑克牌。'Pai' 类包含创建一副完整的扑克牌、随机抽牌、获取特定花色牌等功能,并提供测试代码验证其功能。

Pai 类代码

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

public class Pai {
    private int price;
    private String cl;
    private List<Puke> pks;

    public Pai(int price, String cl, List<Puke> pks) {
        this.price = price;
        this.cl = cl;
        this.pks = pks;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public String getCl() {
        return cl;
    }

    public void setCl(String cl) {
        this.cl = cl;
    }

    public List<Puke> getPks() {
        return pks;
    }

    public void setPks(List<Puke> pks) {
        this.pks = pks;
    }

    // 比较价格
    public int comparePriceTo(Pai otherPai) {
        return this.price - otherPai.getPrice();
    }

    // 判断是否是一副完整的牌
    public boolean isAll() {
        if (pks.size() != 52) {
            return false;
        }
        for (int i = 0; i < pks.size(); i++) {
            Puke puke = pks.get(i);
            if (puke.getNum() < 1 || puke.getNum() > 13) {
                return false;
            }
            if (!'黑桃'.equals(puke.getHuaSe()) && !'红桃'.equals(puke.getHuaSe())
                    && !'方块'.equals(puke.getHuaSe()) && !'梅花'.equals(puke.getHuaSe())) {
                return false;
            }
        }
        return true;
    }

    // 创建一副完整的牌
    public void createAllPuke() {
        pks = new ArrayList<>();
        for (int i = 1; i <= 13; i++) {
            pks.add(new Puke('黑桃', i));
            pks.add(new Puke('红桃', i));
            pks.add(new Puke('方块', i));
            pks.add(new Puke('梅花', i));
        }
    }

    // 随机抽出三张扑克
    public List<Puke> random3() {
        List<Puke> randomPukes = new ArrayList<>();
        Collections.shuffle(pks);
        for (int i = 0; i < 3; i++) {
            randomPukes.add(pks.get(i));
        }
        return randomPukes;
    }

    // 获取所有红桃
    public List<Puke> getHongtaos() {
        List<Puke> hongtaos = new ArrayList<>();
        for (Puke puke : pks) {
            if ('红桃'.equals(puke.getHuaSe())) {
                hongtaos.add(puke);
            }
        }
        return hongtaos;
    }

    // 将牌中的扑克顺序打乱
    public void shuffle() {
        Collections.shuffle(pks);
    }

    // 获取当前 Pai 中所有牌面大小是 num 的 Puke
    public List<Puke> getPukesByNum(int num) {
        List<Puke> pukes = new ArrayList<>();
        for (Puke puke : pks) {
            if (puke.getNum() == num) {
                pukes.add(puke);
            }
        }
        return pukes;
    }

    // 将当前 Pai 中的 Puke 按照牌面大小排序
    public void sortByNum() {
        Collections.sort(pks);
    }
}

测试类代码

import java.util.List;

public class TestPai {
    public static void main(String[] args) {
        // 创建一幅牌
        Pai pai = new Pai(100, '木头', null);
        pai.createAllPuke();
        System.out.println('是否是一副完整的牌:' + pai.isAll());

        // 比较价格
        Pai otherPai = new Pai(50, '塑料', null);
        int diff = pai.comparePriceTo(otherPai);
        System.out.println('两幅牌价格差:' + diff);

        // 随机抽出三张扑克
        List<Puke> randomPukes = pai.random3();
        System.out.println('随机抽出的三张扑克:');
        for (Puke puke : randomPukes) {
            System.out.println(puke);
        }

        // 获取所有红桃
        List<Puke> hongtaos = pai.getHongtaos();
        System.out.println('当前牌中所有红桃:');
        for (Puke puke : hongtaos) {
            System.out.println(puke);
        }

        // 将牌中的扑克顺序打乱
        pai.shuffle();
        System.out.println('打乱后的牌:');
        for (Puke puke : pai.getPks()) {
            System.out.println(puke);
        }

        // 获取当前 Pai 中所有牌面大小是 num 的 Puke
        int num = 8;
        List<Puke> pukesByNum = pai.getPukesByNum(num);
        System.out.println('当前牌中所有牌面大小是' + num + '的 Puke:');
        for (Puke puke : pukesByNum) {
            System.out.println(puke);
        }

        // 将当前 Pai 中的 Puke 按照牌面大小排序
        pai.sortByNum();
        System.out.println('按照牌面大小排序后的牌:');
        for (Puke puke : pai.getPks()) {
            System.out.println(puke);
        }
    }
}

Puke 类代码

public class Puke implements Comparable<Puke> {
    private String huaSe;
    private int num;

    public Puke(String huaSe, int num) {
        this.huaSe = huaSe;
        this.num = num;
    }

    public String getHuaSe() {
        return huaSe;
    }

    public void setHuaSe(String huaSe) {
        this.huaSe = huaSe;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    @Override
    public String toString() {
        return huaSe + num;
    }

    @Override
    public int compareTo(Puke o) {
        return this.num - o.getNum();
    }
}

注意: 以上代码示例中省略了 'Puke' 类的代码, 'Puke' 类用于表示单个扑克牌,包含花色和牌面大小属性。

本代码示例展示了如何用 Java 创建一个名为 'Pai' 的类,用于表示一副扑克牌。 'Pai' 类包含创建一副完整的扑克牌、随机抽牌、获取特定花色牌等功能,并提供测试代码验证其功能。 您可以根据自己的需要修改和扩展此代码示例。

Java 扑克牌游戏:Pai 类实现及测试

原文地址: https://www.cveoy.top/t/topic/oipb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录