2017-04-23 2 views
-1

그래서 BlackJack 프로그램을 작성하려고하는데 각 라운드 후에 베팅 결과를 저장하는 데 어려움이 있습니다. 나는 새로운 값이 생성되었는지 루프가 원래의 값으로 되돌아 왔는지 모릅니다. 또는 그 값이 결코 변경되지 않았 음을 의미합니다. 매 라운드마다 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

관련 문제