我有一款Android开发游戏。我已经完成了大部分工作,但是刚刚注意到一个错误,我不能总是复制,这(如你所知)使它成为调试的噩梦!我确定这是一个逻辑问题,但我一直盯着它看这么久我看不到它。这是对数组进行排序的代码:
// RANDOMISE UP SOME LETTERS //
for(int i=0; i<MAX_LETTERS; i++)
{
int r = rand.nextInt(25);
// SAVE THIS LETTER //
lettersToUse[i] = letters[r];
}
// NOW MAKE SURE WE COPY IN OUR WORD //
for(int i=0; i<nameLen; i++)
{
int r = rand.nextInt(MAX_LETTERS);
Letter tmpLetter = new Letter();
tmpLetter = letters[lettersInName[i]];
while(in_array(lastElementsUsed, r))
{
r = rand.nextInt(MAX_LETTERS);
}
lastElementsUsed[i] = r;
if(!in_array(lettersToUse, tmpLetter.getLetter()))
{
lettersToUse[r] = tmpLetter;
}
}
我有一组18个允许的字母(在应用程序中)。第一个循环(显然)只是挑选一堆随机字母。然后,第二个循环确保最后18个字母中包含要猜到的单词的至少一个字母。
问题在于:大部分时间它完美无缺。在看似随机的间隔中,最后一个数组将缺少要猜到的单词中的一个字母。这个词并不总是在同一个地方。
任何人都可以看到我的逻辑问题吗?如果我错过了一个重要的难题,我很乐意提供更多的信息和代码!
TIA。
答案 0 :(得分:2)
这种方法似乎更简单:
for (int i=0; i<(MAX_LETTERS-wordLength); i++)
{
int r = rand.nextInt(25);
// SAVE THIS RANDOM LETTER //
lettersToUse[i] = letters[r];
}
for (int i=MAX_LETTERS-wordLength; i<MAX_LETTERS; i++)
{
// SAVE THIS LETTER OF THE WORD //
lettersToUse[i] = lettersInName[r]; //I think that lettersInName is the right variable name to use, hopefully you understand what I'm trying to do here
}
lettersToUse.shuffle() //or similar method for whatever array type you're using
然后确保你有你的话加上18个中的其余部分充满随机的,并且他们已被洗牌