2012-03-16 79 views
0

所以我的教授给出了一个任务,我们必须创建一个运行的老虎机程序。该机有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作为种子?任何帮助,将不胜感激。谢谢。

+0

您是否需要使用特定的算法来进行洗牌?我没有看到你的解决方案有什么问题,可能与你的教授稍有不同(例如,随机数可能代表旧数组中的索引而不是新数组,或者你可以使用随机数来交换数值次数) – kylewm 2012-03-16 06:14:27

+0

“可能与你的教授稍微有点不同......”那就是诀窍。谢谢,凯尔! – Haque1 2012-03-16 07:15:34

回答

1
new Symbol[]{Symbol.SEVEN, Symbol.WATERMELON, Symbol.ORANGE, Symbol.PLUM, Symbol.LEMON, Symbol.CHERRY}; 

可以简化为

Symbol.values() 

我的猜测是,你的教授是把

unrandomizedReel[Random.nextInt(6)] 

位置0,然后归零说出来的unrandomizedReel该元素,得到一个随机数字x在1和5之间,并取第x个非空值并将其置于位置1,将其置零,然后用1和4之间的数字重复,等等。

如果您有理由相信您的教授正在使用不同的算法,请使用该信息编辑您的问题。

+0

谢谢你的回应,Mike。不幸的是,我的教授告诉我们,我们不能使用数组以外的任何其他东西。 – Haque1 2012-03-16 06:07:52