Windows表单应用程序 - C#随机数猜测游戏

时间:2012-02-16 15:17:03

标签: c# visual-studio windows-forms-designer

我需要在视觉工作室中使用随机数猜测游戏提供一些帮助。我受到了代码的冲击,但我遇到了随机数生成器的麻烦,并将随机数移植到点击事件中。和往常一样,我真的不需要代码,而是需要一些指导和/或解释我做错了什么,以及是否有更有效的方法在初学阶段做事。下面是我的代码,评论是我遇到麻烦的部分。感谢您提供任何帮助,因为迄今为止我已经收到了帮助,这是一种现象。

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;
        }
    }
}

5 个答案:

答案 0 :(得分:2)

由于rand1answer变量是在构造函数中定义的,因此只能在构造函数中访问它们。在类级别定义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);
}

答案 1 :(得分:1)

我认为你有一个范围问题。 “answer”变量在构造函数中声明,因此它对evaluate_Click(...)中的代码不可见。

答案 2 :(得分:1)

看起来您需要将answer声明为类变量。在构造函数中声明变量时,它仍然是该方法的本地变量,并且不可用于其他方法。

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

这样做

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

只需在用户正确猜对时重置计数器