我正在做一个测验类型的游戏,我正在尝试决定处理它的最佳结构。
10个或更多问题,每个问题都会有多个答案,所有问题都是错误的。
用户将从列表中随机选取的4个可见答案(单选按钮)中选择正确的答案。我们将确保始终能够找到正确的答案。
列表中将包含多个子列表(每个子列表一个问题和多个答案)
在这些子列表中,第一个位置[0]将是问题,其余[1 ...]将是答案。
我的问题是,嵌套列表是正确的方法吗?我在想这个吗?
提前致谢!
答案 0 :(得分:2)
我可能会上课。
public class Question {
public string TheQuestion;
public string[] TheAnswers; //first should be correct answer
public Question(string quest, string[] ans){
TheQuestion = quest;
TheAnswers = ans;
}
}
然后你可以提出你想要的所有问题List<Question> Questions
并从中提取。设置答案时,总是让第一个数组值成为正确的答案,然后您可以随机化顺序以显示答案。
List<Question> Questions = new List<Question>();
string q = "Is stackoverflow the best?";
string[] a = new string {"Yes!", "No.", "Probably Not" };
Question q1 = new Question(q, a);
Questions.Add(q1);
答案 1 :(得分:1)
对于绑定目的等,我建议使用自定义类列表;如:
var questionList = new List<QandA>();
///...
public class QandA
{
public string Question { get; set; }
public string Answer1 { get; set; }
public string Answer2 { get; set; }
public string Answer3 { get; set; }
public string Answer4 { get; set; }
internal int CorrectIndex { get; set; }
}
答案 2 :(得分:1)
这里有一些很好的答案,但是我想把事情组织起来有点不同。而不是让答案1总是正确的。您可以像我在下面那样进行布局,以便在随机化多项选择方面提供更多的灵活性,并在答案正确时更容易进行比较。
for (String path : regPath) {
if (WinRegistry.readStringSubKeys(WinRegistry.HKEY_CURRENT_USER, path) == null) {
System.out.println(path + " was null.");
continue;
}
List<String> ls = WinRegistry.readStringSubKeys(WinRegistry.HKEY_CURRENT_USER, path);
if (ls == null || ls.isEmpty()) {
return;
} else {
for (String sub : ls) {
sub = path + "\\" + sub;
System.out.println(sub);
if (WinRegistry.readStringSubKeys(WinRegistry.HKEY_CURRENT_USER, sub) == null) {
System.out.println(path + " was null.");
continue;
}
ls = WinRegistry.readStringSubKeys(WinRegistry.HKEY_CURRENT_USER, sub);
if (ls == null || ls.isEmpty()) {
return;
} else {
for (String subKey : ls) {
subKey = sub + subKey;
System.out.println(subKey);
}
}
System.out.println(sub);
}
}
}
答案 3 :(得分:0)
“列表清单”可以起作用,但可能非常有限。你没有很多机会来组织你的程序逻辑。
相反,您应该创建类来表示模型中的“事物”。寻找重要的名词:测验,问题和答案。
class Quiz {
List<Question> mQuestions = new List<Question>();
// implement functionality that is relevant at the Quiz level
}
class Question {
string mQuestionText;
List<Answer> mAnswers = new List<Answer>();
// implement functionality that is relevant at the Question level
}
class Answer {
string mAnswerText;
bool mIsCorrect;
// implement functionality that is relevant at the Answer level
}