所以我的教授给出了一个任务,我们必须创建一个运行的老虎机程序。该机有3个卷轴,其本身包括存储在一个枚举6个六个符号:非常基本的东西:在模拟老虎机的程序时遇到问题 - 枚举和数组
public enum Symbol
{
SEVEN(12,"images/seven.jpg"),
WATERMELON(10,"images/watermelon.jpg"),
ORANGE(8,"images/orange.jpg"),
PLUM(6,"images/plum.jpg"),
LEMON(4,"images/lemon.jpg"),
CHERRY(2,"images/cherry.jpg");
}
我们应该使用这些符号来创建一个“卷轴”的对象。我的问题是围绕着这个卷轴(这实际上只是一个符号[]数组),并按照教授请求的顺序填充这些符号。
他要求我们使用Random类来填充使用10作为种子编号的卷轴。这是我到目前为止有:
//Creating an unrandomized reel array, which contains the symbols in the exact order as they appear in the enum
private Symbol[] unrandomizedReel = new Symbol[]{Symbol.SEVEN, Symbol.WATERMELON, Symbol.ORANGE, Symbol.PLUM, Symbol.LEMON, Symbol.CHERRY};
//Declares local Symbol array
Symbol[] randomizedReel = new Symbol[6];
//Keeps track of the position in the unradomized reel array
int unrandomizedReelIndex = 0;
//Creates a Random object which will be used to generate values based
//on the seed. **seed == 10**
Random randNum = new Random(seed);
//Loop will populate the randomized reel
while(unrandomizedReelIndex < 6)
{
//This int will hold values ranging from 0-5. Will be used as an index
//to populate randomized reel
int rangedRandomNumIndex = randNum.nextInt(6);
//if the element at the given index in the randomized reel is empty
if(randomizedReel[rangedRandomNumIndex] == null)
{
//A symbol from the unrandomized reel is added to it
randomizedReel[rangedRandomNumIndex] = unrandomizedReel[unrandomizedReelIndex];
//The index used to iterate through the unrandomized reel is incremented by 1
unrandomizedReelIndex++;
}
}
运行这个“洗牌”的代码,我得到以下的输出:
WATERMELON
PLUM
CHERRY
SEVEN
ORANGE
LEMON
但是,根据我的教授,输出应该是:
ORANGE
PLUM
SEVEN
LEMON
WATERMELON
CHERRY
我在做什么错了?为什么我的输出与他不一样,尽管我们都使用10作为种子?任何帮助,将不胜感激。谢谢。
您是否需要使用特定的算法来进行洗牌?我没有看到你的解决方案有什么问题,可能与你的教授稍有不同(例如,随机数可能代表旧数组中的索引而不是新数组,或者你可以使用随机数来交换数值次数) – kylewm 2012-03-16 06:14:27
“可能与你的教授稍微有点不同......”那就是诀窍。谢谢,凯尔! – Haque1 2012-03-16 07:15:34