Windows窗体应用程序-C#随机数字猜测游戏

Windows窗体应用程序-C#随机数字猜测游戏,c#,visual-studio,windows-forms-designer,C#,Visual Studio,Windows Forms Designer,在VisualStudio中,我需要一些关于随机数字猜测游戏的帮助。我得到了代码的首当其冲,但我有麻烦与随机数生成器和获得随机数端口到点击事件。和往常一样,我并不真的需要代码,而是需要一些指导和/或解释,说明我做错了什么,以及在初学者学习阶段是否有更有效的方法。下面是我的代码,注释是我遇到麻烦的部分。谢谢你的帮助,因为到目前为止,我得到的帮助是非常重要的 using System; using System.Collections.Generic; using System.ComponentM

在VisualStudio中,我需要一些关于随机数字猜测游戏的帮助。我得到了代码的首当其冲,但我有麻烦与随机数生成器和获得随机数端口到点击事件。和往常一样,我并不真的需要代码,而是需要一些指导和/或解释,说明我做错了什么,以及在初学者学习阶段是否有更有效的方法。下面是我的代码,注释是我遇到麻烦的部分。谢谢你的帮助,因为到目前为止,我得到的帮助是非常重要的

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 LAB6B
{
    public partial class game : Form
    {
        public game()
        {
            InitializeComponent();

            //Generate Random number between 1 and 100
         //Not sure if there is a better way?
            Random rand1 = new Random();
            int num1 = rand1.Next(1,50);
            int num2 = rand1.Next(1,50);
            int answer = num1 + num2;

        }

        private void evaluate_Click(object sender, EventArgs e)
        {
            int count = 0;
            int choice = Convert.ToInt32(guess);


            if (guess.Text != string.Empty)
            {
                // set counter to keep track of how many tries
                // should this be done by a loop or will it count without a loop?
                count++;

                //compare user input against random number
          //Can’t import the random number for comparision
                if (choice < answer)
                {
                    Evaluate.Visible = false;
                    lblMessage.Visible = true;
                    lblMessage.Text = "Too Low!";
                    Clear.Visible = true;
                    BackColor = Color.LightSeaGreen;
                }
                else if (choice > answer)
                {
                    Evaluate.Visible = false;
                    lblMessage.Visible = true;
                    lblMessage.Text = "Too High!";
                    Clear.Visible = true;
                    BackColor = Color.SlateBlue;
                }
                else
                {
                    //Display correct message along with how many times it took to get it
                    MessageBox.Show(" Eso es CORRECTO! It took you {0} tries. ", count);
                }
            }
        }

        private void Clear_Click(object sender, EventArgs e)
        {
            guess.Text = "";
            Evaluate.Visible = true;
            lblMessage.Visible = false;
            Clear.Visible = false;
            BackColor = Color.PowderBlue;
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用系统图;
使用System.Linq;
使用系统文本;
使用System.Windows.Forms;
名称空间LAB6B
{
公共部分类游戏:形式
{
公共游戏()
{
初始化组件();
//生成1到100之间的随机数
//不确定是否有更好的方法?
Random rand1=新的Random();
int num1=rand1.Next(1,50);
int num2=rand1.Next(1,50);
int-answer=num1+num2;
}
私有void\u单击(对象发送者,事件参数e)
{
整数计数=0;
int choice=Convert.ToInt32(猜测);
if(guess.Text!=string.Empty)
{
//设置计数器以跟踪尝试次数
//这应该由循环完成,还是在没有循环的情况下计数?
计数++;
//将用户输入与随机数进行比较
//无法导入随机数进行比较
如果(选择<回答)
{
评估。可见=假;
lblMessage.Visible=true;
lblMessage.Text=“太低!”;
清晰可见=真实;
BackColor=Color.LightSeaGreen;
}
else if(选项>答案)
{
评估。可见=假;
lblMessage.Visible=true;
lblMessage.Text=“太高!”;
清晰可见=真实;
BackColor=Color.SlateBlue;
}
其他的
{
//显示正确的消息以及获取消息的次数
Show(“Eso es CORRECTO!您尝试了{0}次。”,count);
}
}
}
私有无效清除\u单击(对象发送者,事件参数e)
{
猜一猜。Text=“”;
评估。可见=真实;
lblMessage.Visible=false;
清晰可见=错误;
BackColor=Color.blue;
}
}
}

我认为您有一个范围问题。“answer”变量是在构造函数中声明的,因此它对evaluate\u Click(…)中的代码不可见。

我认为您存在范围问题。“answer”变量是在构造函数中声明的,因此它对evaluate\u Click(…)中的代码不可见。

看起来需要将
answer
声明为类变量。当您在构造函数中声明变量时,它仍然是该方法的局部变量,其他方法无法使用。

看起来您需要将
answer
声明为类变量。当您在构造函数中声明变量时,它仍然是该方法的局部变量,其他方法无法使用。

我真的不知道您想要得到什么答案,但一个明显的错误是,您必须将
count
变量定义为成员变量,以便跟踪尝试次数。现在,每次用户按下按钮时,
count
将始终初始化为零。

我真的不知道您想要回答什么,但一个明显的错误是,您必须将
count
变量定义为成员变量,以便跟踪尝试次数。现在,每次用户按下按钮时,
计数将始终初始化为零。

由于
rand1
answer
变量在构造函数中定义,您只能在构造函数中访问它们。在类级别定义
answer
将解决大多数问题,因为您可以从构造函数和单击处理程序访问它,如下所示:

private int answer;
private int count;

public game()
{
  InitializeComponent();

  //Generate Random number between 1 and 100
  Random random= new Random();
  // no need for num1 and num2, it's just as random
  answer = random.Next(1,101);
}

由于
rand1
answer
变量是在构造函数中定义的,因此只能在构造函数中访问它们。在类级别定义
answer
将解决大多数问题,因为您可以从构造函数和单击处理程序访问它,如下所示:

private int answer;
private int count;

public game()
{
  InitializeComponent();

  //Generate Random number between 1 and 100
  Random random= new Random();
  // no need for num1 and num2, it's just as random
  answer = random.Next(1,101);
}

首先,您需要在页面级声明变量
answer
,以便其他页面级函数可以使用它

像这样做

public partial class game : Form
    {
        int answer;
        public game()
        {
        }
    }
在计数器中,您可以使用静态计数器或页面级变量,如变量
answer


只要在用户正确猜测后重置计数器即可。首先,您需要在页面级声明变量
answer
,以便其他页面级函数可以使用它

像这样做

public partial class game : Form
    {
        int answer;
        public game()
        {
        }
    }
在计数器中,您可以使用静态计数器或页面级变量,如变量
answer


只要在用户猜对的时候重置计数器就行了

非常感谢,这是我一直在做的事情之一。谢谢你的解释!非常感谢你,这是我一直在做的事情之一。谢谢你的解释!我有一种奇怪的感觉,是那样的,但我不确定。谢谢你的快速回复和很好的解释。我有一种奇怪的感觉,是这样的,但我不确定。谢谢你的快速回复