2014-10-20 139 views
0

我正嘗試在C#中創建一個簡單的猜謎遊戲。當您點擊「生成隨機數」按鈕時,程序會生成一個隨機數。一旦你在文本框中輸入你的猜測並點擊「猜測」,程序會讓你知道你猜對了還是錯。C#號碼猜謎遊戲

問題是我無法將隨機生成的數字傳遞給myFunction(),因此它可以驗證用戶的猜測。這是代碼,它有點混亂;並且預先感謝您的幫助。

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

namespace Number_guessing_game 
{ 
    public partial class Form1 : Form 
    {  
     int montH; 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     {  
      myFunction(int montH);  
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      Random rnd = new Random(); 
      int montH = rnd.Next(1, 10); 
     } 

     void myFunction(int montH) 
     { 
      int guess = int.Parse(textBox1.Text); 
      if (guess == montH) 
      { 
       MessageBox.Show("You win!"); 
      } 

      if (guess != montH) 
      { 
       MessageBox.Show("You lose!"); 
      }  
     } 
    } 
} 

回答

1

問題出在您的button2_Click函數中。在函數內部生成一個隨機數之後,您將創建一個新的int並將該隨機數分配給該隨機數,而不是已經聲明的類級變量。更改button2_Click以下幾點:

private void button2_Click(object sender, EventArgs e) 
{ 
    montH = new Random().Next(1,10); 
} 

另外幾件事我會提,因爲一個月是類級變量,它是在你的班上每個函數訪問,所以你不需要把它作爲到myFunction()參數,其實button1_Click可以驗證結果爲您提供:

private void button1_Click(object sender, EventArgs e) 
{ 
    if (int.Parse(TextBox1.Text) == montH) 
    { 
     MessageBox.Show("You Win!!"); 
    } 
    else 
    { 
     MessageBox.Show("You Lose..."); 
    } 
} 
+0

你可以使用'int.TryParse',如果用戶輸入一個非數字字符。 – joe 2014-10-20 05:05:43

+0

現貨在我的朋友。我確實無意中宣佈了兩個變量,但仍然將它們視爲一個變量,並期望它們能夠工作。這整齊地解決了我的問題。現在我可以添加計數器給玩家3猜測,甚至保持得分。再次感謝! – 2014-10-20 16:10:14

0

你的代碼更改爲:

private void button2_Click(object sender, EventArgs e) 
    { 
    Random rnd = new Random(); 
    montH = rnd.Next(1, 10); 



    } 
1

簡單地定義你的montH爲類級別的變量(像你一樣),然後用下面的代碼:

int montH; 
private void button2_Click(object sender, EventArgs e) 
{ 
    Random rnd = new Random(); 
    montH = rnd.Next(1, 10); //<--- there is no need to redefine montH by int monthH 
} 
private void GussButton_Click(object sender, EventArgs e) 
{ 
    myFunction(month); 
} 

如果您button2_click事件處理程序想要使用它,不需要重新定義它int montH;, ,因爲int montH;導致定義一個在方法級別中變量ew montH

0

我希望下面的作品適合你!你不需要做的事實是把你的montH放在你的Function中,因爲它是這個類的一個可見變量。當你比較猜測== montH時,它已經從montH變量中分配了montH int並進行檢查。

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

namespace Number_guessing_game 
{ 
    public partial class Form1 : Form 
    { 
     int montH; 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      myFunction();  
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      Random rnd = new Random(); 
      int montH = rnd.Next(1, 10); 
     } 

     void myFunction() 
     { 
      int guess = int.Parse(textBox1.Text); 
      if (guess == montH) 
      { 
       MessageBox.Show("You win!"); 
      } 

      if (guess != montH) 
      { 
       MessageBox.Show("You lose!"); 
      } 
     } 
    } 
} 
0

試試這個如下:在這個函數

namespace Number_guessing_game 
{ 
public partial class Form1 : Form 
{ 

    public int montH; 

    public Form1() 
    { 
     InitializeComponent(); 


    } 

    private void button1_Click(object sender, EventArgs e) 
    { 

     myFunction(montH);  





    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     montH=0; 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
    Random rnd = new Random(); 
    montH = rnd.Next(1, 10); 



    } 


    void myFunction(montH) 
    { 
     int guess = int.Parse(textBox1.Text); 
     if (guess == montH) 
     { 
      MessageBox.Show("You win!"); 
     } 

     if (guess != montH) 
     { 
      MessageBox.Show("You lose!"); 
     } 




    } 


} 

}

0

不要在button2_Click()創建一個新的一個月......否則只有新的月份活着

private void button2_Click(object sender, EventArgs e) 
    { 
    Random rnd = new Random(); 
    montH = rnd.Next(1, 10); 



    }