我需要帮助解决有关创建琐事测验游戏的一些设计问题。在继续之前我可以使用一些建议,如果以下方法是OK / Improvable /容易失败/ ..这是我到目前为止所提出的:
public class Question {
private String question;
private List<Answer> answers;
private int statisticsCorrectness;
}
public class Answer {
private String answer;
private boolean correct;
}
我比在持有人类中创建问题,我可以用它来获得一组问题(这是我不确定的地方,把它放在课堂上似乎是错误的,以前从未见过它)
public class StaticStuff {
public Module getModuleOne(){
Module module;
//Question1
Answer a = new Answer("Ten", true);
Answer a1 = new Answer("Five", false);
Answer a2 = new Answer("Six", false);
Answer a3 = new Answer("Eight", false);
Answer a4 = new Answer("10", true);
Answer[] listOfAn = new Answer[]{a, a1, a2, a3, a4};
Question q1 = new Question("What is 5 plus 5", Arrays.asList(listOfAn));
//End Question1
//Question2
//....
//End Question2
//Add all questions
Question[] questionsForFirstModule = new Question[]{q1};
//Create the module that will be returned
module = new Module("Introduction", Arrays.asList(questionsForFirstLession));
return module;
}
}
我计划使用它的方式是在应用程序第一次运行时使用SharedPreferences保存每个Module对象(使用Json或parcelable)。当我需要一组问题时,我只是从SharedPreferences中获取对象并将其发回&#34;更新&#34;到SharedPreferences。
如果需要明确一个明确的问题,那就是:与使用数据库相比,这种方式保存对象有多大的缺点。也许我应该采用数据库方法(在写完这些之后我才意识到的东西)?
我查看了google上的前三页&#34; Trivia游戏java教程&#34;但是没有从中得到足够的信息。
答案 0 :(得分:0)
在这里使用外部数据文件会更好。 不久前,我为编码挑战编写了百万富翁型Quizz游戏,并且使用了类似的方法:
问题 -问题文字 -答案(字符串的数组[4])
这是通过读取一个简单的文本文件来填补的,今天您可以使用JSON或XML,但是纯文本文件可以很好地工作,只是不够灵活。
您可以使用Room或类似的方式,但是请记住,编辑这些问题将是您要做的很多事情,因此请尽可能简化您的操作。
在我的版本中,数据中的第一个答案始终是正确的答案。 我随机显示了显示它们的顺序,主要是为了使写下问题变得更加容易,因为这需要大量的工作,并且您想简化你。
考虑将已显示问题的频率与时间戳一起存储,这样就可以避免重复出现的问题。
在android中,创建一个活动,以显示带有可能答案的问题,然后单击以显示选择的结果,然后再更改ViewModel数据以显示下一个问题。
得分和其他变量可以通过使用通常的方式来处理状态变化而持久化。