2017-07-19 3 views
0

Also ich versuche, ein Fenster Formen raten das Zahlenspiel, einfach, aber wenn ich rate raten, egal, was das Etikett von eins geht. Ich denke, es kann meine Variablen zurückzuführen sein, da trotz ihnen globale userGuess mit noch als lokalem Variable kommt ... ` Kommentar aus userScore das Problem beseitigt, aber ich verstehe immer noch nicht, warum die LogikC# Button Click und Private Variablen

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.Drawing; 

namespace Guess_The_Number_Form 
{ 
    public partial class Form1 : Form 
    { 
     private int userScore; 
     private int randNum; 
     private int userGuess; 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      txtBoxGuess.Hide() 
      ; 
     } 

     private void toolTip1_Popup(object sender, PopupEventArgs e) 
     { 

     } 

     private void btnRandom_Click(object sender, EventArgs e) 
     { 
      Random rand = new Random(); 
      int randNum = rand.Next(0, 10); 
     } 

     private void textBox1_TextChanged(object sender, EventArgs e) 
     { 
      userGuess = Convert.ToInt32(txtBoxGuess.Text); 
     } 

     private void txtBoxGuess_Enter(object sender, EventArgs e) 
     { 

     } 

     private void btnGuess_Click(object sender, EventArgs e) 
     { 
      if (userGuess == randNum) 
      { 
//    userScore++; 
       lbluserScore.Text = userScore.ToString(); 
       lbluserScore.Text = $"{userScore}"; 
      } 
      else if (userGuess != randNum) 
      { 
       userScore--;    
       lbluserScore.Text = userScore.ToString(); 
       lbluserScore.Text = $"{userScore}"; 
      } 
      else if (userScore < 0) 
      { 
       lbluserScore.Text = Color.Red.ToString(); 
      } 
     } 
    } 
} 
versagt

Antwort

0

Sie müssen dies ändern:

private void btnRandom_Click(object sender, EventArgs e) 
    { 
     Random rand = new Random(); 
     int randNum = rand.Next(0, 10); 
    } 

zu

private void btnRandom_Click(object sender, EventArgs e) 
    { 
     Random rand = new Random(); 
     randNum = rand.Next(0, 10); 
    } 

auf diese Weise werden Sie die Membervariable randNum eher als ein set lokale Variable randNum. Sie möchten auch überprüfen, dass Sie den vom Benutzer eingegebenen Wert wirklich richtig in zuweisen. Meine Vermutung ist, dass es nicht ist, was bedeutet, dass Sie nie den Wert einer dieser Variablen ändern, und das Programm denkt, dass der Benutzer immer den richtigen Wert erraten hat.

+0

Ah ich bin so ein Idiot, danke! Also benutze um Anwendungen zu konsolen Ich vergesse wie es ist. Versuchen, den Fehler userGuess zu beheben, wie wir sprechen EDIT: Fest, Prost Mate! –