- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试向玩家发 x 数量的牌,具体取决于他们手中已有的牌数(最多 5 张)。但为了确保您不会两次收到同一张牌,或者收到一张已经打过的牌,我使用了 if 语句。
Card[] hand = new Card[5];
public void dealCard() {
int cardCount = 0;
Random ran = new Random();
if (cardCount < 5) {
int times = 5 - cardCount;
for (int l = 0; l < times; l++) {
int index = ran.nextInt(deck.length);
if (deck[index] != null) {
hand[cardCount] = deck[index];
deck[index] = null;
cardCount++;
}
}
}
}
一开始似乎有效,但最后一张卡(而且总是最后一张卡)经常是空的。有人告诉我,使用 while 循环可能会更好,但只是为了了解我在这里做错了什么。
最佳答案
您的for
循环总是执行五次,无论您多久遇到 null
在循环体内。您可以通过操作 deck
的大小来验证这一点某事< 5
。如果你的方法工作正常,它应该陷入无限循环。相反,你至少会得到 5 - deck.size
许多null
s。一个快速而肮脏的解决方法是递减 l
如果您遇到 null
:
if (deck[index] != null) {
// ...
} else /* if (deck[index] == null) */ {
--l;
}
我会推荐一种不同的策略。您可以预先确定所有卡片的顺序,而不是每次想要抽牌时都生成随机索引,例如与 Fisher-Yates-Shuffle 。这样,您只需要记住抽了多少张牌,然后从数组/列表/队列中提取下一张牌。
关于java - 使用if语句发牌,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39934490/
1、前言 最近小编在做一个关于德州扑克的小游戏,当然已经做完了,才写的一系列文章来记录一下自己的开发经历 点击链接查看其他文章 python实战之德州扑克第二步-判断牌型 python实战
我需要有关这部分代码的帮助。这部分涉及生成 2 个随机数,并使用该随机数同时在 2 个标签框中的每一个中显示一张卡片。这里的问题是随机数没有正确生成,因此卡片没有正确显示(有重复,有时不显示等)
问题 我以前从未制作过纸牌游戏,目前遇到了一些困难。 但是,我已经设法创建了套牌等。 -(NSMutableArray *)arrayWithDeck:(id)sender { [sender
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
我一直致力于使用 F# 对流行的纸牌游戏(情书)进行建模,以了解有关函数式编程的更多信息。 module Game = open Cards open Players type Deck = Card
我只使用 c 几个星期,所以很可能会出现我忽略的明显错误。我看过其他线程,但我不明白我正在读的很多内容。该程序假设有一个无限大的牌组。 已知问题: clearBuffer 当前未使用,我正在尝试不同的
我是一名优秀的程序员,十分优秀!