2017-09-14 4 views
-1

Donc j'ai travaillé avec des jeux de pari de dés (si deux dés roulent plus de 7 combinés, vous gagnez, sinon vous perdez). Le problème que j'obtiens est que je ne sais pas comment faire baisser ou augmenter mes jetons de pari. J'ai mis les jetons de départ à 100 et si vous gagnez vous obtenez 10 jetons de plus, si vous perdez, vous serez pris 10 jetons de vous. Cependant en cas de victoire ou de défaite, mes jetons vont à 110 ou 90. Comment pourrais-je faire en sorte que mon programme prenne ou ajoute 10 jetons au montant de jeton le plus récent, pas l'original 100. Voici mon code actuel:C# WPF numéro de paris jeu de paris

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void button_Click(object sender, RoutedEventArgs e) 
    { 
     #region dice throw 

     Random num = new Random(); 
     int Number = new int(); 
     int Number1 = new int(); 
     int Chips = 100; 

     Number1 = num.Next(1, 7); 
     dice1.Text = Number1.ToString(); 
     Number = num.Next(1, 7); 
     dice2.Text = Number.ToString(); 

     #endregion 

     #region Win/lose 

     if (Number + Number1 >= 7) 
     { 
      if (bet10.IsChecked == true) 
      { 
       totalChips.Text = Chips.ToString(); 
       Chips = Chips + 10; 
      } 
      if (bet20.IsChecked == true) 
      { 
       Chips = Chips + 20; 
       totalChips.Text = Chips.ToString(); 
      } 
      if (bet50.IsChecked == true) 
      { 
       Chips = Chips + 50; 
       totalChips.Text = Chips.ToString(); 
      } 
      winloseblock.Text = "You Win!"; 

     } 
     else 
     { 
      if (bet10.IsChecked == true) 
      { 
       Chips = Chips - 10; 
       totalChips.Text = Chips.ToString(); 
      } 
      if (bet20.IsChecked == true) 
      { 
       Chips = Chips - 20; 
       totalChips.Text = Chips.ToString(); 
      } 
      if (bet50.IsChecked == true) 
      { 
       Chips = Chips - 50; 
       totalChips.Text = Chips.ToString(); 
      } 
      winloseblock.Text = "You lose!"; 

     } 

     #endregion 
    } 
} 
+0

Déplacer 'int Chips = 100;' à la ligne ci-dessus 'private void button_Click (expéditeur d'objet, RoutedEventArgs e)'. Cela fait-il fonctionner? – mjwills

+1

Possibilité de duplication de [Les variables sont réinitialisées à zéro lorsque j'appelle une méthode] (https://stackoverflow.com/questions/7744497/variables-reset-to-zero-when-i-call-a-method) – mjwills

+0

vous avez besoin d'une meilleure compréhension de la portée et de la durée de vie variable avec les variables. Je commencerais par lire plus sur ce sujet. –

Répondre

0

vous initialisez la variable Chips chaque fois que vous cliquez sur le bouton:

private void button_Click(object sender, RoutedEventArgs e) 
{ 
    #region dice throw 
    Random num = new Random(); 
    int Number = new int(); 
    int Number1 = new int(); 
    int Chips = 100; 

    ... 
} 

vous devriez faire Chips un champ de la classe en déplaçant la déclaration en dehors de cette méthode:

int Chips = 100;  

private void button_Click(object sender, RoutedEventArgs e) 
{ 
    #region dice throw 
    Random num = new Random(); 
    int Number = new int(); 
    int Number1 = new int(); 

    ... 
}