作为学习 C# 的一种方式,我正在开发一款带有卡牌战斗的小型冒险游戏。不过,我在生成卡片时遇到了一些麻烦。我要做的是为卡片生成一些随机值,实例化它们,然后将新对象分配给一个列表,该列表是玩家被处理的“手”。这就是我到目前为止所拥有的:
public void generateBattleCards()
{
string cardStat;
string cardName;
int cardValue;
string[] stats = { "Power", "Precision", "Allure", "Vitality", "Essence" };
for (int i = 0; i < 5; i++)
{
Random random = new Random();
cardStat = stats[random.Next(0, stats.Length)];
cardValue = random.Next(1, 10);
cardName = cardValue.ToString() + " of " + cardStat;
Card newCard = new Card(cardName, cardStat, cardValue);
CardHand.Add(newCard);
}
picPlayerCard1.Image = CardHand[0].cardImage;
picPlayerCard2.Image = CardHand[1].cardImage;
picPlayerCard3.Image = CardHand[2].cardImage;
picPlayerCard4.Image = CardHand[3].cardImage;
picPlayerCard5.Image = CardHand[4].cardImage;
}
我在将卡片添加到列表中时得到一个空引用。
在为此苦苦挣扎了一段时间之后,我突然想到,假设我让它工作,这可能不是构建它的最优雅的方式。因此,如果有人对如何更好地构建它有意见,我将不胜感激。
作为旁注,我想使用来自玩家类的玩家统计数据作为 cardStat 的最小值和最大值。我还没有想出一个好方法来根据选择的随机统计名称获取正确的统计值。统计信息作为私有 int 存在于玩家类中,具有获取和设置的属性。
在试图自己弄清楚这一点时,我遇到了字典上的信息。我以前从未使用过,但是否值得研究创建所有可能的卡片、存储它们并仅检索我需要的卡片而不是每次都尝试创建它们?
感谢您提供的任何帮助或反馈:)