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

2

Изображение 174551 Я создаю приложение С#, которое генерирует два случайных целых числа от 100 до 500. Цифры должны выполнять дополнение так, чтобы

           247 + 129 = ?

В форме есть текстовое поле для ввода пользователем ответа на проблему. При нажатии кнопки приложение должно выполнять следующие действия:

Проверьте вход пользователя и отобразите сообщение о том, является ли он правильным ответом или нет. Создайте два новых случайных числа и отобразите их в новой проблеме в форме, добавив кнопку "Сохранить оценку в файл".

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

Код:

InitializeComponent();

        Random rand = new Random();
        {
            int number1;

            number1 = rand.Next(400) + 100;

            numberLabel1.Text = Convert.ToString(number1);
        }
        {

            int number2;

            number2 = rand.Next(400) + 100;
            numberLabel2.Text = Convert.ToString(number2);
        }
    }

    private void checkButton_Click(object sender, EventArgs e)
    {

        int correctAnswer;
        correctAnswer = int.Parse(numberLabel1.Text) + int.Parse(numberLabel2.Text);
        int userAnswer;
        userAnswer = Convert.ToInt32(userInputBox.Text);

        if (userAnswer == correctAnswer)
        {
            MessageBox.Show("Your Answer is Correct");
        }
        else
        {
            MessageBox.Show("Your Answer is Incorrect");
        }
    }
    private void clearButton_Click(object sender, EventArgs e)
    {

        numberLabel1.Text = "";
        numberLabel2.Text = "";
        userInputBox.Text = "";
    }

    private void exitButton_Click(object sender, EventArgs e)
    {

        this.Close();
    }

    private void answerBox_TextChanged(object sender, EventArgs e)
    {

               }
}

}

У меня есть вопрос: как мне получить результат? Поле сообщения не отображается, и я правильно отвечаю на проблему каждый раз. После этого как создать два новых случайных числа и отобразить их в новой проблеме в форме, добавьте кнопку "Сохранить оценку в файл".

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

  • 2
    Я очень плохо знаком с переполнением стека и очень плохо знаком с C #. Пожалуйста, будьте нежны.
  • 0
    Ваш вопрос довольно велик ... не могли бы вы немного свести его к конкретному вопросу, с которым у вас проблемы? Если у вас проблемы с более чем одной вещью, нам будет проще помочь, если вы зададите отдельный вопрос для каждой вещи.
Показать ещё 11 комментариев
Теги:

3 ответа

0

Создайте два новых случайных числа и покажите их в новой задаче на форме

просто скопируйте-вставьте код, который выполняет работу, которую вы уже писали. делать это с помощью метода намного лучше:

Добавьте этот метод:

private void GenerateNewQuestion()
{
       Random rand = new Random();
       {
            int number1;

            number1 = rand.Next(400) + 100;

            numberLabel1.Text = Convert.ToString(number1);
       }
       {

            int number2;

            number2 = rand.Next(400) + 100;
            numberLabel2.Text = Convert.ToString(number2);
       }
}

а затем используйте его везде, где хотите:

if (userAnswer == correctAnswer)
{
     MessageBox.Show("Your Answer is Correct");

     GenerateNewQuestion();
}

добавьте кнопку "Сохранить оценку в файл".

Вам не нужно добавлять кнопку во время выполнения для вашей проблемы. Вместо этого вы можете:

  1. Добавить кнопку в вашей форме
  2. Сделать видимым свойство False

(вы можете сделать это с помощью конструктора или добавить saveScoreButton.Visible = false; в конструктор формы)

  1. Сделайте его видимым везде, где вы хотите

В твоем случае:

if (userAnswer == correctAnswer)
{
      MessageBox.Show("Your Answer is Correct");

      GenerateNewQuestion();
      saveScoreButton.Visible = true;
}

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

вы можете добавить счетчики для правильных и неправильных ответов, а затем использовать их:

добавьте это в поле формы:

int totalNumberOfProblems = 1; //when the form is opened a question will be already asked
int correctAnswers = 0;
int wrongAnswers = 0;

увеличьте correctAnswers и wrongAnswers при получении ответа в вашем checkButton_Click:

if (userAnswer == correctAnswer)
{
      MessageBox.Show("Your Answer is Correct");

      GenerateNewQuestion();
      saveScoreButton.Visible = true;
      correctAnswers++;
      totalNumberOfProblems++;

}
else
{
      MessageBox.Show("Your Answer is Incorrect");
      GenerateNewQuestion();
      saveScoreButton.Visible = true;
      wrongAnswers++;
      totalNumberOfProblems++;
}

затем выполните запись в файл:

private void saveScoreButton_Click(object sender, EventArgs e)
{
    using (StreamWriter writer = new StreamWriter(@"C:\Users\Hüseyin\Desktop\saved scores.txt", true))
    {
        string text = $"Total number of problems: {totalNumberOfProblems-1}\r\nNumber of correct answers: {correctAnswers}\r\n";
        double ratio = (double)correctAnswers / (double)totalNumberOfProblems-1;
        text += $"Percentage: {ratio:P2}";
        writer.WriteLine(text);
        MessageBox.Show("File Saved");
    }
}
  • 0
    GenerateNewProblem не отображается синим цветом на моем, как будто я ничего не назначил. и кнопка Сохранить счет не существует в текущем контексте.
  • 0
    Вы добавили private void GenerateNewQuestion(){ ... } метод private void GenerateNewQuestion(){ ... } ? он должен быть вне любых других методов и внутри класса формы
Показать ещё 13 комментариев
0
private static Random rand = new Random();
private void checkButton_Click(object sender, EventArgs e)
{
    int num1 = rand.Next(400) + 100;
    int num2 = rand.Next(400) + 100;
    label1.Text = num1.ToString();
    label2.Text = num2.ToString();
    int correctAnswer = num1 + num2;
    int userAnswer = Convert.ToInt32(textBox1.Text);

        if (userAnswer == correctAnswer)
        {
            MessageBox.Show("Your Answer is Correct");
        }
        else
        {
            MessageBox.Show("Your Answer is Incorrect");
        }
}
  • 0
    Привет и добро пожаловать в Stack Overflow. Пожалуйста, попробуйте дать объяснение при отправке кода в качестве ответа. Смотрите, как мне написать хороший ответ? для дополнительной информации.
0

[Первый]

Console.WriteLine ( String.Format("Answer => " + userAnswer ) );

покажет его в окне консоли

MessgeBox.Show( ( String.Format("Answer => {0}", userAnswer ) );

покажет его на MessageBox.

Я поставил 2 типа использования String.Format для вас :)

[Второй]

вы можете сделать кнопку, которая выполняет задачу снова.

поместите свой генерирующий код под функцию кнопки

[В третьих]

Вам нужно изучить StreamWriter

  • 0
    Незначительный момент - в первом примере вам не нужно использовать string.Format , потому что "Answer => " + userAnswer выполнит работу по созданию самой строки.
  • 0
    Я пока не совсем понимаю. Мне нужно сделать это в окнах форм. Что бы вызвать MessageBox.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню