【发布时间】:2016-10-01 12:59:31
【问题描述】:
所以我必须将 Black Jack 编程为 C# 中的控制台程序。我添加了一个枚举,其中包含所有不同的卡片类型(没有颜色,只有从 2 到 10 的 9 个不同数字,一个用于 ace 的值,一个用于图片卡片)具有 11 个不同的值。
然后我创建了一个从该枚举中返回随机卡片的方法。这工作正常。但是在任务的第二步中,我必须添加图片卡,并且我必须处理卡片组中图片卡的数量。这副牌共有 52 张卡片,其中 12 张是图片卡片。我尝试了以下方法,但它不起作用。
class Program
{
static Random rnd = new Random(); //Initialisierung Zufallsgenerator
static ECARDS DrawRandomCard() //Methode zum zufälligen ziehen einer Karte aus dem enum ECARDS
{
if ((int)DrawRandomCard() < 12)
{
return ECARDS.Picture;
}
else
{
return (ECARDS)rnd.Next(2, 11);
}
}
enum ECARDS { Zwei = 2, Drei = 3, Vier = 4, Fünf = 5, Sechs = 6, Sieben = 7, Acht = 8, Neun = 9, Zehn = 10, Ass = 11, Picture = 99 }; // enum mit allen verfügbaren Karten
我是新人,所以也许对你来说很容易。感谢您的帮助。
【问题讨论】:
-
检测到无限递归。
-
你不能只选择这样的数字——没有什么可以限制它处理比一副牌实际拥有的更多的 2 或 8。你需要一个真实世界的牌组,有 4 个 2s、4 个 7s 等。This might be helpful
-
DrawRandomCard()中的第一条指令是对自身的无条件调用。 -
关于随机生成卡片。如果生成随机牌,不排除连续获得 10 个 ace。最好将剩余卡片存储在表格中或列表中。只需在其余的中随机选择。