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 の最小値と最大値として使用したいと思います。選択したランダムな統計名に基づいて正しい統計値を取得する良い方法がわかりません。統計は、get および set のプロパティを持つプライベート int としてプレーヤー クラスに存在します。
これを自分で理解しようとしているときに、辞書に関する情報に出くわしました。これまで使ったことはありませんが、毎回作成するのではなく、考えられるすべてのカードを作成して保存し、必要なカードだけを取得することを検討する価値はありますか?
あなたが与えたいと思う助けやフィードバックをありがとう:)