Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#数字猜谜游戏_C# - Fatal编程技术网

C#数字猜谜游戏

C#数字猜谜游戏,c#,C#,我正在尝试用C#创建一个简单的数字猜测游戏。当您单击“生成随机数”按钮时,程序将生成一个随机数。在文本框中输入猜测并单击“猜测”后,程序会让您知道猜测是对还是错 问题是我无法将随机生成的数字传递给myFunction(),这样它就可以验证用户的猜测。这是代码,有点乱;提前感谢大家的帮助 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using Syst

我正在尝试用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!");
            }    
        }
    }
}
将代码更改为:

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



    }

只需将您的
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);
}
int月;
私有无效按钮2\u单击(对象发送者,事件参数e)
{
随机rnd=新随机();

montH=rnd.Next(1,10);//我希望下面的方法对您有效!您不需要做的是将montH放入函数本身,因为它是类的一个可见变量。当您比较guess==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!");
            }
        }
    }
}
请尝试以下操作:

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!");
        }




    }


}

}

不要在按钮2\u Click()中创建新的月份。。。否则新的月份只能在这个函数中存活

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



    }

问题在于您的
按钮2\u单击
功能。生成随机数后,在函数内部创建一个新的int并将随机数分配给该int,而不是已经声明的类级别变量。将
按钮2\u单击
更改为以下内容:

private void button2_Click(object sender, EventArgs e)
{
    montH = new Random().Next(1,10);
}
我要提到的另外几件事是,因为montH是一个类级变量,类中的每个函数都可以访问它,所以您不需要将它作为参数传递给
myFunction()
,事实上,
按钮1\u单击
可以为您验证结果:

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

您可以使用
int.TryParse
,以防用户在my friend上输入非数字字符.spot。我确实无意中声明了两个变量,但仍然将它们视为一个变量,并期望它们能够工作。这巧妙地解决了我的问题。现在我可以添加计数器,让玩家猜3次,甚至可以记分。再次感谢!