我在Android上为我的班级做了一个相当可靠的测验游戏,从阵列中挑选了10个随机问题。它现在的工作方式是用户在EditText字段中输入答案。我也很高兴我能够弄清楚如何使用简单的shuffle算法来获取重复的问题,因此用户抛出的每一个问题都是独一无二的(我实在为此感到非常自豪)。
理想情况下,想要让游戏成为多项选择,但我没时间用完了,我按照上面提交了它。但我一直在考虑如何让游戏更好,用户友好,我认为EditText的选择不是理想的IMO。所以我一直在考虑像这样重写它:
所以我想知道是否有人能指出我如何实现这一目标的正确方向。我不是要求完整的代码,只是我可以阅读更多关于它的地方,并帮助我弄明白。我似乎在SO中找到的是获取随机问题的方法。
提前致谢!
答案 0 :(得分:1)
创建一个数组来保存你的答案。然后从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,并通过在选择组中的某个单选按钮时检查correctIndex变量来了解用户是否正确。
答案 1 :(得分:1)
可能有更多有效或优雅的方式专门设置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}
}