C#号猜谜游戏

时间:2014-10-20 03:51:55

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

6 个答案:

答案 0 :(得分: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;导致在方法级别定义新的montH变量。

答案 1 :(得分:1)

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

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

我要提到的另外几件事,因为montH是一个类级变量,它可以被类中的每个函数访问,所以你不需要将它作为参数传递给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...");
    }
}

答案 2 :(得分:0)

将您的代码更改为:

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



    }

答案 3 :(得分:0)

我希望以下内容适合您!你不需要做的是将你的montH放在你的函数本身,因为它是一个看到的类变量。当您比较guess == montH时,它已经从分配的montH int和从您的montH变量中检查。

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

答案 4 :(得分: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!");
        }




    }


}

}

答案 5 :(得分:0)

不要在button2_Click()中创建新的montH ...否则新的montH只能在此函数中存活

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



    }