Java:用于多选游戏的结构

时间:2016-11-12 03:54:35

标签: java arrays data-structures hashmap multiple-choice

我正在尝试创建一个多选游戏,每个问题有4个可能的答案 在游戏的主要部分,玩家将被问到一个问题并将被提示输入答案 在我的代码中,连同问题回答字符串,我将以某种方式需要能够分辨出哪个是正确的答案,甚至可以标记问题以便不在以后的几轮中重复。此外,可能的答案需要在“游戏”之间以随机/不同的顺序。

我正在试图找出用于存储上述所有内容的数据结构,以便能够正确编写代码。

我的第一选择是将主Hashmap<String, HashMap>和第二HashMap<String, Boolean> *存储在第一个中。第一个映射将问题字符串存储为键,第二个HashMap存储为值。第二个HashMap将把答案存储为每个键的键和布尔值,指示哪个是正确的答案,作为值。
有点复杂,但至少在理论上似乎有用,虽然我仍然没有办法将问题标记为“已经问过”。

我的第二个选择是二维数组,其行代表一个问题,0列是问题字符串,1,2,3,4列存储答案< / em>字符串,5列存储正确的答案字符串,并且可能有第7列(6)存储标记,标记是否已经问过问题。
虽然理论上比较简单,但我担心这种方法实际编码会很困惑。

如果有更好/更简单的方法,请告诉我,甚至可以详细说明他们的好处。

2 个答案:

答案 0 :(得分:3)

Java是一种面向对象的语言。你应该使用它。

示例:创建一个表示问题的类和可能的答案。

public class Question {
    private String       question;
    private String       correctAnswer;
    private List<String> answerList;
}

现在,你可以创建一个很好的有用构造函数,首先提出问题,然后使用varargs给出所有答案,并首先给出正确的答案:

new Question("How satisfied are you with this answer?",
             "Extremely satisfied",
             "Very satisfied",
             "Somewhat satisfied",
             "Not so satisfied");

然后,您的构造函数可以构建answers列表并调用Collections.shuffle(this.answers)来随机化它们。

然后,您将所有问题添加到List<Question>并在其上调用shuffle,以便按随机顺序询问问题,并且只会问一次。

答案 1 :(得分:0)

因为这都是理论上的,所以你应该考虑使用对象。

提出问题课程。让它存储您的问题字符串以及答案字符串。

您可以根据需要存储任意数量的问题字符串,例如数组。答案可能只是一个表示正确答案索引的整数。

就Hashmaps而言,如果你想为每个问题存储唯一的ID值,你可以使用它们,并查找它们,但这并不是必需的。

您可以将这些问题对象存储在Arraylist中,自由添加随机播放并迭代它们