텍사스 홀덤 포커를 할 수있는 프레임 프로그램을 작성하려고합니다. CurrentPlayer
는 카드받는 방법C# 구조체 변수의 값을 보유 할 수 없습니다.
public bool hasPair(Player CurrentPlayer)
{
bool flag;
Card[] SevenCards = new Card[7];
SevenCards[0].Color = CurrentPlayer.Card1.Color;
SevenCards[0].Number = CurrentPlayer.Card1.Number;
SevenCards[1].Color = CurrentPlayer.Color2;
SevenCards[1].Number = CurrentPlayer.Number2;
SevenCards[2] = Ground.Card1;
SevenCards[3] = Ground.Card2;
SevenCards[4] = Ground.Card3;
SevenCards[5] = Ground.Card4;
SevenCards[6] = Ground.Card5;
flag = isThere_Pair(SevenCards);
return flag;
}
그리고 여기에 있습니다 : : CurrentPlayer
가 쌍을 가지고 있다면 내가 결정 기능 hasPair
에 문제가 있어요
public void Deal_Cards(Player Player)
{
int Color1, No1, Color2, No2;
while (true)
{
dealhelper1:
Color1 = (RandomColor.Next() % 4);
No1 = ((RandomNo.Next() % 13));
if (CardDeck[Color1, No1].isChosen == true)
{
goto dealhelper1;
}
if (CardDeck[Color1, No1].isChosen == false)
{
Player.Card1.Color = Color1;
Player.Card1.Number = No1+1;
Player.Card1.imagePath = CardDeck[Color1, No1].imagePath;
Player.Color1 = CardDeck[Color1, No1].Color;
Player.Number1 = CardDeck[Color1, No1].Number;
CardDeck[Color1, No1].isChosen = true;
break;
}
}
while (true)
{
dealhelper2:
Color2 = (RandomColor.Next() % 4);
No2 = ((RandomNo.Next() % 13));
if (CardDeck[Color2, No2].isChosen == true)
{
goto dealhelper2;
}
if (CardDeck[Color2, No2].isChosen == false)
{
CardDeck[Color2, No2].isChosen = true;
Player.Card2.Color = Color2;
Player.Card2.Number = (No2)+1;
Player.Color2 = CardDeck[Color2, No2].Color;
Player.Number2 = CardDeck[Color2, No2].Number;
break;
}
}
display_Player_Cards(Player);
}
하지만를 hasPair
기능에, CurrentPlayer
의 카드 ' 숫자와 색상은 0입니다. 다른 방법으로 시도했지만 쿼리에서 묻는다면 플레이어 카드의 숫자 값을 가져올 수 없습니다. Deal_Cards
함수로 초기화되었습니다. 그래도 지상 카드는 아무런 문제가 없습니다.
흥미롭게도 display_Player_Cards(Player)
기능이 올바르게 작동하므로 값을 성공적으로 가져 와서 카드를 표시합니다.
public Player P1 = new Player();
public Player AI = new Player();
왜 그들이 값을 보유 할 수 없습니다
내가 좋아하는 타입 Player
(구조체)의 공용 변수를 사용할 수 있습니까? 이 문제를 어떻게 해결할 수 있습니까? 도움 주셔서 감사합니다.
디버깅을 시도하고 'Deal_Cards' 메소드가 실행을 완료하는지 확인하십시오. 그 'while (true)'루프는 정말로 위험합니다. 실행을 끝내지 않으면 필드가 모두 0 인 이유를 발견했을 것입니다. – aevitas