【C#】クラスのサンプル(山札)
カードクラスを複数持っている(属性として含んでいる)状態をクラスとして抽出します
クラス
using System.Collections.Generic;
public class Deck
{
public List<Card> Cards { get; set; }
public Deck()
{
Cards = new List<Card>();
foreach (Suit suit in Enum.GetValues(typeof(Suit)))
{
foreach (Rank rank in Enum.GetValues(typeof(Rank)))
{
Cards.Add(new Card(suit, rank));
}
}
}
public void Shuffle()
{
// Using Fisher-Yates shuffle algorithm
for (int i = 0; i < Cards.Count; i++)
{
int randomIndex = UnityEngine.Random.Range(i, Cards.Count);
Card temp = Cards[i];
Cards[i] = Cards[randomIndex];
Cards[randomIndex] = temp;
}
}
}
Deck
クラスは、Card
Cards
と呼ばれるオブジェクトのリストを属性として持っています。コンストラクタは、カードの新しい空のリストを作成し、すべての可能な値をループします。Suit
そしてRank
新しいものを作成するための列挙型Card
組み合わせごとにオブジェクトを付け、リストに追加します。
shuffleというメソッドも作っています。Shuffle
フィッシャー・イェーツのシャッフルアルゴリズムと呼ばれる一般的なシャッフルアルゴリズムを使用してデッキをシャッフルします。このアルゴリズムは、リスト内のすべてのカードをループし、各カードについて、現在のインデックスとリストの末尾の間にランダムなインデックスを選択し、ランダムに選択されたインデックスで現在のカードをカードと交換します。
ディスカッション
コメント一覧
まだ、コメントがありません