Java 扑克牌游戏:Pai 类实现及测试
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' 类包含创建一副完整的扑克牌、随机抽牌、获取特定花色牌等功能,并提供测试代码验证其功能。 您可以根据自己的需要修改和扩展此代码示例。
原文地址: https://www.cveoy.top/t/topic/oipb 著作权归作者所有。请勿转载和采集!