그래서 카드 게임을 만들고 있고 각 카드에 대해 3 개의 문자열과 bool이있는 배열이 필요합니다. 프로그램을 실행하면 두 개의 각 양복에 대한 에이스의 사례와 나는 왜 그런지 모르겠다. 아마 정말 명백한 것을 놓쳤 겠지만, 왜 그런 일을하는지 전혀 모른다.Tuple 배열을 채우기 위해 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
'튜플 (tuple)'의 사용을 진지하게 제한하는 것이 좋습니다. 'A'와'B' 루프는 너무 복잡합니다. 다른 '튜플 (Tuple)'의 경우, 해당 정보를 보유 할 사용자 정의 클래스를 만드는 것이 좋습니다. – juharr
수트가 하나 인 두 개의 목록과 다른 수트의 값을 만든 경우 훨씬 간단합니다. 그런 다음 두 개의 중첩 된 foreach 루프를 만듭니다. –
당신의 문제는 내부 루프에서 포스트 증가분을 사용한다는 것입니다. 그래서'A = 1' 그리고'A ++'를'A'에 할당하지만 증분 앞의 값은 1을 반환합니다. 'B'는 외부 루프의 끝에서'Tuple'에 재 할당하기 때문에 문제가 없습니다. 실제로 필요한 것은 (int B = 1, B <= 13, b ++)'for (int A = 1; A <= 3; A ++)이고 모든' 터플 '쓰레기. – juharr