2017-04-06 153 views
1

我在C++中创建Yahtzee。骰子滚动一个数字,并根据滚动的数字,通过从randNum中减去1来创建位置(因为数组基于零)。然后使用该位置,我想增加我的数组中的适当元素,以表示我已经滚动了该特定数字。例如:骰子1,1,1,5,6,4。我的数组应显示:3,0,0,1,1,1。使用我当前的代码,元素不会增加。任何帮助表示赞赏。C++设置私有数组的值

头:

class dice { 
public: 
    dice(); 
    void rollDice(); 
    int getRoll(int diceNumber); 

    //This is the array that tells us how many of one number we have 
    //ex) element 4 belongs to the #5 so if there is a 3 stored in element 4 that means we rolled 3 5's 
    int arrayOfEachNumberRolled[5]{0,0,0,0,0}; 

    ~dice(); 
} 

源:

void dice::rollDice(){ 
    //roll a random number and store it in the appropriate location 
    int randNum; 
    for(int i = 0; i < 6; i++){ 

     //Get the new random number between 1 & 6 
     randNum = rand() % 6 + 1; 
     //set the appropriate dice 
     if(i == 0){//dice1 
      dice1->set(randNum); 
      arrayOfEachNumberRolled[randNum - 1]+=1; 
     } 
     else if(i == 1){//dice 2 
      dice2->set(randNum); 
      arrayOfEachNumberRolled[randNum - 1]++; 
     } 
     else if(i == 2){//dice 3 
      dice3->set(randNum); 
      arrayOfEachNumberRolled[randNum - 1]++; 
     } 
     else if(i == 3){//dice 4 
      dice4->set(randNum); 
      arrayOfEachNumberRolled[randNum - 1]++; 
     } 
     else if(i == 4){//dice 5 
      dice5->set(randNum); 
      arrayOfEachNumberRolled[randNum - 1]++; 
     } 
     else if (i == 5){//dice 6 
      dice6->set(randNum); 
      arrayOfEachNumberRolled[randNum - 1]++; 
     } 
    } 
} 

回答

1

需要6个元件的阵列,而不是5.更改

int arrayOfEachNumberRolled[5]{0,0,0,0,0}; 

int arrayOfEachNumberRolled[6]{0,0,0,0,0,0}; 
+0

Facepalm表情符号。不能相信我错过了这一点。工作完美。 TY – MattCucco

+0

@MattCucco,别难过。我们大多数人都在那里:) –