私は、独立した学習を掘り下げるために雑学ゲーム アプリケーションに取り組んでおり、最近、雑学ゲームをコンソール アプリケーションから Windows フォーム アプリケーションに移行しました。Windows アプリケーションで自分のやりたいことを実行する際に問題が発生しているため、現在問題が発生しています。
これまでの私のプログラムの基本的な機能:
配列から質問を 1 つずつ表示するラベルがあります。
ユーザーが回答を入力するテキストボックスがあり、そのテキストボックスを回答配列と比較して、ユーザーが正しいか間違っているかを判断したいと考えています。
最初の質問が表示され、ユーザーの回答が正しい/正しくないと判断されましたが、2番目の質問が に表示された後lblquestion
、回答が与えられる前に回答が間違っていると判断され、わかりません。私は dotnetpearls.com や他のサイトでオンラインで調査を行い、配列を読んで while ループを実行しようとしましたが、それでもこれを機能させる方法を見つけることができなかったようです。
これまで私が取り組んできた私のコードは次のとおりです。
public partial class frmentertainment : Form
{
string[] entertainmentanswers = { "1982", "PEARL HARBOR","ACTOR" };
string[] entertainmentquestions = { "What year did President Eisenhower become relieved of Presidency?", "What U.S. base was bombed forcing the United States to become involved in World War II", "What was the profession of Abraham Lincolns' assassin?"};
int correct = 0;
int incorrect = 0;
public frmentertainment()
{
InitializeComponent();
btnanswer.Enabled = false;
}
private void frmentertainment_Load(object sender, EventArgs e)
{
lblquestion.Text = ("Welcome! In this category of Trivia you will be quizzed on questions about movies, actors/actresses, television shows and more! Press 'Start Trivia' when you are ready");
txtanswer.Visible = false;
}
//track correct and incorrect answers
private void KeepScore()
{
lblcorrect.Text = "Correct: " + correct;
lblincorrect.Text = "Incorrect: " + incorrect;
}
private string txtboxvalue = "";
private void txtanswer_TextChanged(object sender, EventArgs e)
{
//making sure txt is entered into txtbox
if (txtanswer.Text != txtboxvalue)
{
btnanswer.Enabled = true;
}
else
{
btnanswer.Enabled = false;
}
}
//not working yet
private void AskQuestions()
{
for (int i = 0; i < entertainmentquestions.Length; i++)
{
lblquestion.Text = entertainmentquestions[i];
}
}
private void ResetPrompt()
{
lblquestion.Text = "";
txtanswer.Text = "";
}
private void AnalyzeFirstQuestion()
{
//determine if answer is wrong/right
if (txtanswer.Text == entertainmentanswers[0])
{
MessageBox.Show("You got this one right!", "Correct!");
correct += 1;
}
else
{
MessageBox.Show("You got this one wrong! the correct answer was " + entertainmentanswers[0]);
incorrect += 1;
}
}
private void AnalyzeSecondQuestion()
{
if (txtanswer.Text == entertainmentanswers[1])
{
MessageBox.Show("You got this one right!", "Correct!");
correct += 1;
}
else
{
MessageBox.Show("You got this one wrong! The correct answer was " + entertainmentanswers[1], "Wrong!");
incorrect += 1;
}
}
private void btnanswer_Click(object sender, EventArgs e)
{
//button pressed to submit answer
AnalyzeFirstQuestion();
KeepScore();
ResetPrompt();
lblquestion.Text = entertainmentquestions[1];
AnalyzeSecondQuestion();
}
private void btnstart_Click(object sender, EventArgs e)
{
//begin trivia, clicking this begins the first question
btnstart.Visible = false;
lblquestion.Text = entertainmentquestions[0];
txtanswer.Visible = true;
}
}
2 番目の質問を表示した後に休憩または一時停止を追加して、コードが正しいか間違っているかを判断する前に、ユーザーが入力して回答するのを待つ方法はありますか?