gpt4 book ai didi

C#:写了我自己的洗牌器;继续获得 "King of Spades"作为牌组中的最后一张牌

转载 作者:太空狗 更新时间:2023-10-29 22:18:58 25 4
gpt4 key购买 nike

我正在开发一个 21 点程序以尝试学习 C#。我有一个卡片类和一个由卡片组成的牌组数组对象。我使用 deck 数组来填充 deckInPlay 列表(卡片),它实际上将在游戏中使用。我选择在游戏中使用列表而不是数组,因为列表可以动态改变大小。到目前为止,我已经能够解决我自己的问题,但是现在我已经创建了一个 shuffleDeck 方法,我遇到了一个真正困扰我的问题。

让我们从我的 shuffleDeck 方法代码开始(我在经销商类构造函数中将 Random 实例化为 rnd):

public void shuffleDeck(int timesToShuffle)
{
for (int i = 0; i <= timesToShuffle; i++)
{
for (int j = 0; j < 52; j++)
{
int randomNumber = rnd.Next(0, deckInPlay.Count - 1);
Card randomCard = deckInPlay[randomNumber];
shuffler.Add(randomCard);
deckInPlay.RemoveAt(randomNumber);
}

for (int j = 0; j < 52; j++)
{
int randomNumber = rnd.Next(0, shuffler.Count - 1);
Card randomCard = shuffler[randomNumber];
deckInPlay.Add(randomCard);
shuffler.RemoveAt(randomNumber);
}
}
}

如您所见,我使用了两个列表:deckInPlay 列表,它是我想在游戏中使用的实际套牌,以及 shuffler 列表,它主要用于帮助洗牌。我打算让代码从 deckInPlay 列表中取出随机牌,并将它们一张一张地添加到洗牌器列表中,同时从 deckInPlay 列表中删除牌。然后,我希望流程反转:从洗牌器列表中随机取出牌并将它们添加到 deckInPlay 列表中,在此过程中从洗牌器列表中移除每张牌。

乍一看,洗牌器似乎工作正常。当使用大于 1 的参数调用 shuffleDeck 时,它的效果更好。但有一点保持不变,无论参数是什么:黑桃 K 始终是洗牌过程后列表中的最后一张牌。黑桃 K 恰好是我初始牌组和牌组列表中默认的最后一张牌。

我不明白我哪里出错了。如果你能给我一个线索,我将不胜感激。感谢阅读!

最佳答案

Next 的最大值是独有的,所以这意味着您达不到那个数字,然后我怀疑您的“黑桃 K”是您牌组中的数字 52。

关于C#:写了我自己的洗牌器;继续获得 "King of Spades"作为牌组中的最后一张牌,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24773713/

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