gpt4 book ai didi

c# - 创建一副纸牌 - 不要成为纸牌类的一部分 - Beginning Visual C# 2010

转载 作者:太空宇宙 更新时间:2023-11-03 10:57:05 25 4
gpt4 key购买 nike

我是 C# 的新手,也是这个论坛的新手。两个月前决定学习 c#,并从 Beginning Visual C# 2010 开始。到现在为止不需要任何帮助。在本章(第 10 章)中,我必须创建一副纸牌。我已经做了两个带有等级和花色的枚举。在此之后我创建了卡片类:

public class Card
{
public readonly Rank rank;
public readonly Suit suit;

private Card()
{

}

public Card(Suit newSuit, Rank newRank)
{
suit = newSuit;
rank = newRank;
}

public override String ToString()
{
return "The " + rank + "of " + suit + "s";
}
}

在此之后我必须制作甲板类:

public class Deck
{
private Card[] cards;

public Deck()
{
cards = new Card[52];
for (int suitVal = 0; suitVal < 4; suitVal++)
{
for (int rankVal = 1; rankVal < 14; rankVal++)
{
**cards[suitVal * 13 + rankVal -1] = new Card((Suit)suitVal,(Rank)rankVal);**
}
}
}

套牌类还有更多内容,但我只是没有用粗体表示部分(13 至少有意义,因为每套花色有 13 张牌,但我真的不能放置 -1)。套牌类中具体发生了什么,特别是粗体部分?

提前致谢

最佳答案

你开始于

suitVal = 0; rankVal = 1;

你需要制作一副牌中的第一张牌,第一张牌位于索引位置0

suitVal * 13 + rankVal - 1 = 0 * 13 + 1 - 1 = 0; <-- exactly what you need

然后你得到

suitVal = 0; rankVal = 2;  //index should be 1
suitVal * 13 + rankVal - 1 = 0 * 13 + 2 - 1 = 1; <-- exactly what you need

一直到最高级别。所以现在你在一副牌中有一个花色,从 012 的位置有 13 张牌。下一个索引位置应该是 13,代表第二套花色的 A

suitVal = 1; rankVal = 1;  //index should be 13
suitVal * 13 + rankVal - 1 = 1 * 13 + 1 - 1 = 13; <-- exactly what you need

等,等...直到

suitVal = 3; rankVal = 13;  //index should be 51, last one
suitVal * 13 + rankVal - 1 = 3 * 13 + 13 - 1 = 51; <-- exactly what you need

在 C# 中,所有数组/列表都是从 0 开始的,因此当您包含一个从 1 开始的构造时,例如示例中的 rankVal,您必须通过从其索引中删除一个来进行补偿。

关于c# - 创建一副纸牌 - 不要成为纸牌类的一部分 - Beginning Visual C# 2010,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19092876/

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