Я создаю приложение С#, которое генерирует два случайных целых числа от 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)
{
}
}
}
У меня есть вопрос: как мне получить результат? Поле сообщения не отображается, и я правильно отвечаю на проблему каждый раз. После этого как создать два новых случайных числа и отобразить их в новой проблеме в форме, добавьте кнопку "Сохранить оценку в файл".
При нажатии на эту кнопку должно записываться общее количество проблем, количество правильных ответов, а также процент ответов, которые были правильно решены.
Создайте два новых случайных числа и покажите их в новой задаче на форме
просто скопируйте-вставьте код, который выполняет работу, которую вы уже писали. делать это с помощью метода намного лучше:
Добавьте этот метод:
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();
}
добавьте кнопку "Сохранить оценку в файл".
Вам не нужно добавлять кнопку во время выполнения для вашей проблемы. Вместо этого вы можете:
(вы можете сделать это с помощью конструктора или добавить saveScoreButton.Visible = false;
в конструктор формы)
В твоем случае:
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");
}
}
private void GenerateNewQuestion(){ ... }
метод private void GenerateNewQuestion(){ ... }
? он должен быть вне любых других методов и внутри класса формы
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");
}
}
[Первый]
Console.WriteLine ( String.Format("Answer => " + userAnswer ) );
покажет его в окне консоли
MessgeBox.Show( ( String.Format("Answer => {0}", userAnswer ) );
покажет его на MessageBox.
Я поставил 2 типа использования String.Format
для вас :)
[Второй]
вы можете сделать кнопку, которая выполняет задачу снова.
поместите свой генерирующий код под функцию кнопки
[В третьих]
Вам нужно изучить StreamWriter
string.Format
, потому что "Answer => " + userAnswer
выполнит работу по созданию самой строки.