2016-11-12 82 views
2

我正在尝试为每个问题创建一个包含4个可能答案的多选游戏。
在游戏的主体部分,玩家将被问到一个问题,并提示输入答案。
在我的代码,以及问题答案字符串,我会以某种方式需要能够告诉哪个是正确的答案,甚至可能标记的问题,以便在后面的几轮不会重复。另外,可能的答案需要在“playthroughs”之间以随机/不同的顺序排列。Java:用于多选游戏的结构

我想弄清楚使用什么数据结构来存储上述所有,以便能够适当地编写代码。

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

我的第二个选择是一个二维阵列,其线条将代表一个问题,0柱上作为问题弦乐,1,2,3,4列存储答案字符串,所述5列存储正确答案字符串,并且可能有第7列(6)存储标志,标记问题是否已经被询问。
虽然理论上比较简单,但我担心这种方法会让实际编码变得非常混乱。

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

回答

3

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

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

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

,您可以创建一个良好的有用的构造,在那里你给的问题,然后再全部采用varargs的答案,正确答案第一:

你的构造可以再建answers列表并致电Collections.shuffle(this.answers)随机化它们。

然后,您将所有问题添加到List<Question>并针对该问题调用shuffle,因此问题将以随机顺序提出,并且只会提出一次。

+0

由于我是新来的Java(和一般OOL)我一直在努力地试图获得与所有这些新的不同的认识结构,当我忘了什么应该是明显的选择。谢谢! –

0

由于这是所有的理论,你应该考虑使用对象。

提问类。让它将您的问题字符串与答案字符串一起存储。

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

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

你可以存储在一个ArrayList这些问题对象,添加随意洗牌,并在它们之间迭代