2017-04-23 6 views
-1

ブラックジャックプログラムを作成しようとしていますが、各ラウンド後にベット結果を保存するのに問題があります。新しい値が生成されたかどうかわからないし、ループが元の値に戻っているためです。あるいは、その価値は単に決して変更されていないということです。各ラウンドの後に、プログラムとループの最初のメソッドであるので、Betting()メソッドが実行されます。私のコードは次のとおりです。whileループでintフィールドの値を変更する

public static void WinnerIs() 
    { 
     // Winning/Lossing rules 

     if (DealerHand.Sum() > PlayerHand.Sum() && DealerHand.Sum() <= 21) 
     { 
      Money.Lossing(); 
      Console.WriteLine("The Dealer have {0} , u have {1} . Dealer won. U now have {2}", DealerHand.Sum(), PlayerHand.Sum(), Money.PlayerMoney); 

     } 
     if (DealerHand.Sum() < PlayerHand.Sum() && PlayerHand.Sum() <= 21) 
     { 
      Money.Winning(); 
      Console.WriteLine("The Dealer have {0} , u have {1} . U won. U now have {2}", DealerHand.Sum(), PlayerHand.Sum(), Money.PlayerMoney); 
     } 
     if (DealerHand.Sum() == PlayerHand.Sum()) 
      Console.WriteLine("It's a tie"); 

     if (DealerHand.Sum() > 21) 
     { 
      Money.Winning(); 
      Console.WriteLine("Dealer have more then 21. U won. U now have {0}", Money.PlayerMoney); 
     } 


     dealerHand.Clear(); 
     playerHand.Clear(); 
    } 


} 


class Money 
{ 
    //Betting and Winning/Lossing results 

    private static int playerMoney = 1000; 
    public static int PlayerMoney { get { return playerMoney; } set { } } 
    public static int playerBetInt = 0; 
    public static int PlayerBet = 0; 

    public static void Betting() 
    { 

     Console.WriteLine("How much u want to bet? u have {0}$", PlayerMoney); 

     while (true) 
     { 

      string playerBetString = Console.ReadLine(); 
      if (Int32.TryParse(playerBetString, out playerBetInt)) 
      { 
       Console.WriteLine("Your Bet is: {0} ", playerBetInt); 

       if (playerBetInt > 0) 
       { 
        PlayerBet = playerBetInt; 
        break; 
       } 

      } 

      else 
       Console.WriteLine("Invield value Try Again"); 

     } 
    } 
     public static void Winning() { 
      if (Hands.DealerHand.Sum() < Hands.PlayerHand.Sum() && Hands.PlayerHand.Sum() <= 21) 
       PlayerMoney = PlayerMoney + PlayerBet; 
     } 

     public static void Lossing() { 
      if (Hands.DealerHand.Sum() > Hands.PlayerHand.Sum() && Hands.DealerHand.Sum() <= 21 || Hands.PlayerHand.Sum() > 21) 
       PlayerMoney = PlayerMoney - PlayerBet; 
     } 
+0

コード内の「静的」のすべての発生を取り除きます。これにより、コンパイラのエラーが発生する可能性があります。したがって、コンパイラのエラーを修正するために必要なことはすべて行いますが、静的な方法を使用することはありません。あなたはそれをするために実際に言語を学ばなければならないかもしれませんが、それが目標ですね。問題が解決しない場合は、もう一度やり直してください。 –

答えて

0

あなたは(playerBetInt> 0)

に達しますないのであれば、このしようとした場合、私はちょうどチェックするために、他を追加します。それ以外の場合は

if (playerBetInt > 0) 
{ 
    PlayerBet = playerBetInt; 
    break; 
} 
else 
    Console.WriteLine("reached the else"); 

をか値を設定する際に問題があることがわかっている場合は、呼び出されません。

+0

@Artiumそしてその行が呼ばれていますか?もしそうなら、出力は何ですか? – Bas

関連する問題