gpt4 book ai didi

java - 纸牌游戏中避免重复纸牌的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:30:59 25 4
gpt4 key购买 nike

我犯了一个菜鸟错误,我想在不重新编码整个程序的情况下找出解决办法。场景如下:

我正在从 52 张卡片组中创建 6 张卡片。这些卡片有 2 个字段:int rank 和 char suit。我正在拉随机等级和西装,并为每张卡片创建一个新的未命名实例。这不考虑重复项。

所以我成功创建了 6 张卡片,但我不想要重复的卡片。这可能是一个新问题,但我们都去过那里:)感谢您的帮助!


public void displayCards(List<ImageView> disp) {
int cardNumber = 0;
for (ImageView c : disp) {

cardNumber++;

rank = rand(13) + 2;
int i = rand(4);
if (i == 0) {
suit = 's';
} else if (i == 1) {
suit = 'h';
} else if (i == 2) {
suit = 'd';
} else {
suit = 'c';
}

if (cardNumber == 1) {
dc1 = new Card(rank, suit);
} else if (cardNumber == 2) {
dc2 = new Card(rank, suit);
} else if (cardNumber == 3) {
dc3 = new Card(rank, suit);
} else if (cardNumber == 4) {
pc1 = new Card(rank, suit);
} else if (cardNumber == 5) {
pc2 = new Card(rank, suit);
} else {
pc3 = new Card(rank, suit);
}}

最佳答案

选项 1:使用两个(嵌套)循环(所有花色和所有等级)创建 52 张牌的完整副牌(例如,在列表中)。洗牌(使用 Collections.shuffle() )这副牌并拿走六张牌。

选项 2:只需创建您想要的卡片数量(就像您尝试做的那样)。在这里,您需要将每张卡片放入 Set<Card> 中。直到该组有所需数量的卡片。本质上,重复项将在集合中消失。为此,您需要实现 equals()hashcode()对于 Card 类。

关于java - 纸牌游戏中避免重复纸牌的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18094599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com