私は最初のゲームを作成していて、いくつかの問題に遭遇しました。 私は常に7つのタイルを持っており、すべての可能な組み合わせを作る必要があります(最大5040) ファイルの例:13 01 02 24 14 12 25数字は、13のような各側の数字の数を意味します。 3ドットあります。 結果の例:C#ドミノゲームで可能なすべての組み合わせを見つける
31 10 02 24 41 12 25
52 21 14 42 20 01 13
31 12 24 41 10 02 25
52 20 01 14 42 21 13
...
どうすればよいですか?私は、再帰を使用してみましたが、これは私が持っているものである を動作しませんでした。実際には
class Kauliukas
{
public int Dalis1 { get; set; }
public int Dalis2 { get; set; }
public Kauliukas(int dalis1, int dalis2)
{
Dalis1 = dalis1;
Dalis2 = dalis2;
}
public Kauliukas()
{
}
}
class KauliukuKonteineris
{
public const int MaxIlgis = 7;
private Kauliukas[] Kauliukai = new Kauliukas[MaxIlgis];
public int Count { get; set; }
public KauliukuKonteineris(int size)
{
Kauliukai = new Kauliukas[size];
}
public void Add(Kauliukas kauliukas)
{
Kauliukai[Count++] = kauliukas;
}
public Kauliukas Get(int index)
{
return Kauliukai[index];
}
}
class Grandine
{
public static int MaxIlgis = 7;
private Kauliukas[] Kauliukai = new Kauliukas[MaxIlgis];
public int Count { get; set; }
public Grandine(int size)
{
Kauliukai = new Kauliukas[size];
}
public void Add(Kauliukas kauliukas)
{
Kauliukai[Count++] = kauliukas;
}
public Kauliukas Get(int index)
{
return Kauliukai[index];
}
}
class GrandiniuKonteineris
{
public const int MaxGrandines = 5040;
private Grandine[] Grandines = new Grandine[MaxGrandines];
public int Count { get; set; }
public GrandiniuKonteineris(int size)
{
Grandines = new Grandine[size];
}
public void Add(Grandine grandine)
{
Grandines[Count++] = grandine;
}
public Grandine Get(int index)
{
return Grandines[index];
}
}
class Program
{
public const int MaxKauliuku = 7;
public const string DataFile = "Kur3.txt";
public const int MaxGrandiniu = 5040;
static void Main(string[] args)
{
KauliukuKonteineris Duomenys = new KauliukuKonteineris(MaxKauliuku);
Skaitymas(Duomenys);
GrandiniuKonteineris Rezultatai = new GrandiniuKonteineris(MaxGrandiniu);
GrandiniuSudarymas(Duomenys, Rezultatai);
}
/// <summary>
/// Duomenu nuskaitymas is failo ir sukelimas i konteinerine klase
/// </summary>
/// <param name="Duomenys"></param>
public static void Skaitymas(KauliukuKonteineris Duomenys)
{
using (StreamReader reader = new StreamReader(DataFile))
{
string line = reader.ReadLine(); // Nuskaitoma visa eilute
string[] values = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); // Padalina skaicius
for(int i=0; i<values.Length; i++)
{
int dalis1 = int.Parse(values[i])/10; // Dvizenkli skaciu padalinus is 10 gaunamas skaitmuo esantis pirmoje pozicijoje
int dalis2 = int.Parse(values[i]) % 10; // Dvizenklio skaiciaus padalinto is 10 liekana - skaitmuo antroje pozicijoje
Kauliukas kauliukas = new Kauliukas(dalis1, dalis2);
Duomenys.Add(kauliukas);
}
}
}
あなたが試みた再帰をなぜ表示しないのですか? – Sam07