私はカードゲームを作っているので、各カード用に3つの文字列とブールを含む配列が必要です。プログラムを実行すると2つ作成されます各スーツのエースのインスタンスと私はなぜ、本当に明白な何かをおそらく見逃していませんが、私はそれが何をしているのか分からない。次のようにforループを使ってタプル配列を生成する
クラスのデッキ {
Tuple<string, string, string, bool>[] DeckArray = new Tuple<string, string, string, bool>[56];
public void DeckArrayAssigner()
{
string Number, Suit, Card;
int Count = 0;
int A = 1;
int B = 1;
for (Tuple<int, int> Assigner = new Tuple<int, int>(A, B); Assigner.Item2 <= 3; Assigner = new Tuple<int, int>(A, B++))
{
for (Assigner = new Tuple<int, int>(A, B); Assigner.Item1 <= 13; Assigner = new Tuple<int, int>(A++, B))
{
Number = NumericNumberSwitch(Assigner.Item1);
Suit = NumericSuitSwitch(Assigner.Item2);
Card = (Number + " of " + Suit);
DeckArray[Count] = new Tuple<string, string, string, bool>(Number, Suit, Card, true);
Count++;
Console.WriteLine(Card);
}
Console.WriteLine();
Assigner = new Tuple<int, int>(A = 1, B);
}
}
public string NumericNumberSwitch(int NumericNumber)
{
string Number;
switch (NumericNumber)
{
case 1: Number = "Ace"; break;
case 2: Number = "Two"; break;
case 3: Number = "Three"; break;
case 4: Number = "Four"; break;
case 5: Number = "Five"; break;
case 6: Number = "Six"; break;
case 7: Number = "Seven"; break;
case 8: Number = "Eight"; break;
case 9: Number = "Nine"; break;
case 10: Number = "Ten"; break;
case 11: Number = "Jack"; break;
case 12: Number = "Queen"; break;
case 13: Number = "King"; break;
default: Number = "???"; break;
}
return Number;
}
public string NumericSuitSwitch(int NumericSuit)
{
string Suit;
switch (NumericSuit)
{
case 1: Suit = "Hearts"; break;
case 2: Suit = "Diamonds"; break;
case 3: Suit = "Clubs"; break;
case 4: Suit = "Spades"; break;
default: Suit = "???"; break;
}
return Suit;
}
}
出力は次のとおりです。
Ace of Hearts
Ace of Hearts
Two of Hearts
Three of Hearts
Four of Hearts
Five of Hearts
Six of Hearts
Seven of Hearts
Eight of Hearts
Nine of Hearts
Ten of Hearts
Jack of Hearts
Queen of Hearts
King of Hearts
Ace of Diamonds
Ace of Diamonds
Two of Diamonds
Three of Diamonds
Four of Diamonds
Five of Diamonds
Six of Diamonds
Seven of Diamonds
Eight of Diamonds
Nine of Diamonds
Ten of Diamonds
Jack of Diamonds
Queen of Diamonds
King of Diamonds
Ace of Clubs
Ace of Clubs
Two of Clubs
Three of Clubs
Four of Clubs
Five of Clubs
Six of Clubs
Seven of Clubs
Eight of Clubs
Nine of Clubs
Ten of Clubs
Jack of Clubs
Queen of Clubs
King of Clubs
Ace of Spades
Ace of Spades
Two of Spades
Three of Spades
Four of Spades
Five of Spades
Six of Spades
Seven of Spades
Eight of Spades
Nine of Spades
Ten of Spades
Jack of Spades
Queen of Spades
King of Spades
「タプル」の使用を真剣に制限することをお勧めします。 'A'と' B'のループでは、複雑すぎるだけです。他の 'Tuple'については、その情報を保持するカスタムクラスを作成することをお勧めします。 – juharr
スーツが1つのリストと、スーツが1つのリストを作成し、もう一方の値を作成すると、これははるかに簡単になります。次に、2つのネストされたforeachループを作成します。 –
あなたの問題は、内側のループでポストインクリメントを使用しているので、 'A = 1'で' A ++ 'に2を代入しますが、インクリメントの前の値は1を返します。 'B'の問題はありません。外部ループの最後に' Tuple'に再割り当てするからです。本当に必要なのは、(int B = 1; B <= 13; b ++) '' for(int A = 1; A <= 3; A ++)で、 ''タプルジャンク。 – juharr