Windows form application - C # Случайная игра с угадыванием чисел - PullRequest
1 голос
/ 16 февраля 2012

Мне нужна небольшая помощь с игрой в случайные числа в визуальной студии.Я получил основной удар по коду, но у меня проблемы с генератором случайных чисел, и я получаю случайное число для переноса в события щелчка.Как всегда, мне на самом деле не нужен код, но есть некоторые рекомендации и / или объяснения относительно того, что я делаю неправильно, и есть ли более эффективный способ сделать что-то на начальном этапе обучения.Ниже мой код, комментарии - это те части, где у меня проблемы.Спасибо за любую помощь в качестве помощи, которую я получил на сегодняшний день, будучи феноменальным.

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 ]

2 голосов
/ 16 февраля 2012

Поскольку переменные 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);
}
1 голос
/ 16 февраля 2012

Прежде всего, вам необходимо объявить вашу переменную answer на уровне страницы, чтобы ее могли использовать другие функции уровня страницы.

Сделайте так

public partial class game : Form
    {
        int answer;
        public game()
        {
        }
    }

В вашем счетчике вы можете использовать статический счетчик или переменную уровня страницы, например, переменную answer

, просто сбросьтесчетчик, когда пользователь угадал правильно

1 голос
/ 16 февраля 2012

Похоже, вам нужно объявить answer как переменную класса. Когда вы объявляете переменную в конструкторе, она остается локальной для этого метода и недоступной для других методов.

1 голос
/ 16 февраля 2012

Я на самом деле не знаю, на что вы хотите получить ответ, но очевидная ошибка заключается в том, что вы должны определить переменную count как переменную-член, чтобы отслеживать количество попыток. Как и сейчас, count всегда будет инициализироваться как ноль каждый раз, когда пользователь нажимает кнопку.

1 голос
/ 16 февраля 2012

Я думаю, что у вас есть проблема сферы.Переменная «answer» объявляется внутри вашего конструктора, поэтому она не будет видна коду внутри define_Click (…).

...