テキサスホールデムポーカーをプレイできるフレームプログラムを作成しようとしています。 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)
機能が正常に機能しているため(値が正しく取り込まれ、カードが表示されます)。
私のようなタイプPlayer
(構造体)のパブリック変数を使用します。彼らはそれらの値を保持することはできませんなぜ
public Player P1 = new Player();
public Player AI = new Player();
?どうすればこの問題を解決できますか? ありがとうございます。
デバッグし、 'Deal_Cards'メソッドが実行を終了するかどうかを確認してください。これらの 'while(true)'ループは本当に危険です。実行が終了しない場合は、フィールドがすべてゼロである理由を確認したことがあります。 – aevitas