2014-10-20 137 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); 



    }