我正在做一个“谁想要成为一个百万富翁”的游戏,我一直坚持如何检查答案是否是正确的答案。
我已经制作了struct
我可以用来创建一些看起来像这样的问题:
struct Question
{
public string question, ansA, ansB, ansC, ansD;
public int correctAnswer;
}
然后我提出这样的问题:
Question ett = new Question();
ett.question = "Who is the richest?";
ett.ansA = "XXXX";
ett.ansB = "god";
ett.ansC = "vit";
ett.ansD = "röd";
ett.correctAnswer = 1;
然后我把它们放在一个列表中并从那里检索一个随机问题。标签中的问题和四个不同按钮的答案。
Random rnd = new Random();
int number = rnd.Next(0, NumberOfquestions+1);
var question = QuestionList[number];
lblquestion.Text = question.question;
button1.Text = question.ansA;
button2.Text = question.ansB;
button3.Text = question.ansC;
button4.Text = question.ansD;
变量名称不是100%正确,因为我已经更改它们以便您理解它们,因为我的语言中有变量。
我一直坚持如何检查点击的按钮是否正确,我对此有一些想法,但我不确定这是否有用或是否有更好的方法可以做到。
我想到的一件事是制作一个方法,检查它是否正确,如果按钮返回1-4之间的值,并将其与int correctAnswer
中的struct
进行核对。
public int button1_Click(object sender, EventArgs e)
{
return 1;
}
我想到的另一件事是,如果我可以制作一个包含游戏中所有正确答案的方法,并搜索一下是否与我按钮上的文字相匹配? 也许不是最好的使用方法。
namespace quiz
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void Form1_Load(object sender, EventArgs e)
{
programmet();
}
public void btnNewGame_Click(object sender, EventArgs e)
{
}
public void BtnAvsluta_Click(object sender, EventArgs e)
{
this.Dispose();
this.Close();
}
public void programmet()
{
Question ett = new Question();
ett.fråga = "who is richest ?";
ett.svarA = "XXXX";
ett.svarB = "god";
ett.svarC = "vit";
ett.svarD = "röd";
ett.rättsvar = 1;
var QuestionList = new List<Question>();
QuestionList.Add(ett);
QuestionList.Add(tre);
QuestionList.Add(fyra);
QuestionList.Add(fem);
Random rnd = new Random();
int number = rnd.Next(0, numberOfQuestions -1);
var currentQuestion = QuestionList[number];
lblFråga.Text = currentQuestion.fråga;
button1.Text = currentQuestion.svarA;
button2.Text = currentQuestion.svarB;
button3.Text = currentQuestion.svarC;
button4.Text = currentQuestion.svarD;
}
public void button1_Click(object sender, EventArgs e)
{
/// here I want to use CurrentQuestion.question etc.
/// to do the "if(currentquestion.ansA == 1)"
}
}
}
答案 0 :(得分:0)
这是一个可能的解决方案:
定义一个变量来存储当前问题(currentQuestion
),该问题可以从每个按钮的Click事件处理程序以及您选择问题的方法中访问。
public void button1_Click(object sender, EventArgs e) {
if (currentQuestion.correctAnswer == 1)
CorrectAnswer();
else
WrongAnswer();
}
public void button2_Click(object sender, EventArgs e) {
// same for button2 ...
}
答案 1 :(得分:0)
您可以指定答案按钮的Tag
,button1.Tag = 1
,button2.Tag = 2
等。然后,对于所有答案按钮,将Click
事件设置为相同的方法,例如
void Answer_Click(object sender, EventArgs e)
在方法正文中,您可以使用...
访问所点击按钮的Tag
int selectedAnswer = (int)((Button)sender).Tag;
要访问您当前的问题,请在Form1
课程中创建一个私有媒体资源或字段:
private Question CurrentQuestion;
并在programmet()
方法中,像这样分配:
this.CurrentQuestion = QuestionList[number];
...所以你可以使用
if (CurrentQuestion.correctAnswer == selectedAnswer) { ... }
答案 2 :(得分:0)
另一种方法是当您将答案加载到表单上时,将相应按钮的标记设置为true,其余为false。现在,在常见的单击事件处理程序中,检查发送者的标记值是否转换为按钮,您的答案是否正确
答案 3 :(得分:0)
为什么不创建两个名为CorrectAnswer()和IncorrectAnswer()的方法,并从每个按钮单击调用相应的方法。像这样。
public void button1_Click(object sender, EventArgs e) {
//if answer is correct
CorrectAnswer();
public void button2_Click(object sender, EventArgs e) {
//if answer is incorrect
IncorrectAnswer();
希望这会有所帮助