我在Android中为我的班级制作了一个相当可靠的问答游戏,其中从数组中随机选择10个问题。它现在的工作方式是用户在 EditText 字段中输入答案。我也很高兴我能够弄清楚如何使用简单的随机算法不得到重复的问题,所以抛给用户的每一个问题都是独一无二的(我实际上为此感到非常自豪)。
理想情况下,我想让游戏成为多项选择,但我的时间用完了,我如上所述提交了它。但我一直在思考如何让游戏变得更好和用户友好,我认为EditText选项不是理想的IMO。所以我一直在考虑这样重写它:
所以我想知道是否有人能给我指明正确的方向来实现这一点。我不是要求完整的代码,只是我可以阅读更多关于它的信息并帮助我弄清楚它的地方。我在SO中发现的似乎都是随机提问的方法。
提前感谢!
创建一个数组来保存您的答案。然后从0-[array.length]中选择一个随机数,并将数组中的索引设置为正确答案。即:
int[] answers = new int[4];
answers[0] = getRandomAnswer();
answers[1] = getRandomAnswer();
answers[2] = getRandomAnswer();
answers[3] = getRandomAnswer();
int correctIndex = Random.nextInt(0,4); // Maybe off by 1? I didn't compile
answers[correctIndex] = correctAnswer;
现在你有一个包含3个随机答案和1个正确答案的数组。您需要确保getRandomAnswer()方法不会向您返回正确答案,或者在此时检查您的数组中是否有正确答案的多个实例,如果存在,则只保留一个。
您可以使用数组中的答案填充RadioGroup,并且当用户选择组中的单选按钮之一时,您可以通过检查纠正索引变量来知道用户是否正确。
可能有更有效或更优雅的方法专门设置4个随机位置,这是我的建议:
int setPlace[4] = {0,0,0,0};
setPlace[0] = Random.nextInt(3) + 1;
for (loop = 1; loop<=3; Loop++)
{
do
{
fix1 = Random.nextInt(3) + 1;
if ((fix1!=setPlace[0])&&(fix1!=setPlace[1])&&(fix1!=setPlace[2])(fix1!=setPlace[3]))
{
setPlace[loop]=fix1;
fix1=0;
}
}
while{fix1!=0}
}