2015-04-02 3 views
0

Je veux simplement être capable de marquer mes jets de dés suivant un ensemble de règles. Les règles varient d'un simple 1 roulé vaut 100 points et trois 1 vaut 400, flush droit vaut quelques points et 6x1 vaut 8000.Marquer mes jets de dés en utilisant C# et Unity

Voici le code.

Je ne sais pas comment faire le code de calcul des scores individuellement

int[] rollDice(int numDice) 
{ 
    int[] diceRolls = new int[6]; 
    //int[] diceRolls = null; 
    for (int i = 0; i < NumDice; i++) 
    { 
     diceRolls[i] = rollSingleDie(6); 
    } 

    return diceRolls; 
} 

//Score the dice rolls in the array 
int scoreDiceRolls(int[] rolls) 
{ 
    int score = 0; 



    //TODO: Complete the scoring logic 

    // for (int i = 0; i < NumDice; i++) 
    // { 
    //  if (rolls[i] == 2 && 4) 
    //  { 
    //   score += 10; 
    //  } 
    // } 

// if (rolls[1] == 2) 
// { 
//  score += 100; 
// } 

    //SIX ONES RULE ////////////////////////////////////////////////////// NEED HELP HERE. 
    if (rolls[0] == 1) 
    { 
     if (rolls[1] == 1) 
     { 
      if (rolls[2] == 1) 
      { 
       if (rolls[3] == 1) 
       { 
        if (rolls[4] == 1) 
        { 
         if (rolls[5] == 1) 
         { 
          score += 8000; 
         } 
        } 
       } 
      } 
     } 
    } 
    // ROLL A ONE RULE = 100 points 
    for (int i = 0; i < NumSides; i++) 
    { 
     if (rolls[i] == 1) 
    { 
      score += 100; 
    } 

}

// int intToCheck = 1; 

//foreach (int one in rolls) 
//{ 
// if (x.Equals(1)) 
// { 
//  score += 10; 
//   
// } 
//} 


    // if (rolls[) 
//for (int i = 0; i < 6; i++) 
//{ 
// if (rolls[i] == 1) 
// { 
//  score += 10; 
// } 
//} 




    return score; 
} 
+0

'if (rolls.Any (y => y == 1))' – DLeh

Répondre

0

Notez que lors de l'agrégation des données dans des tableaux (ou tout autre dénombrable) il y a un certain nombre des fonctions utiles dans System.Linq.Enumerable

if(rolls 
    .Take(6) // Just to make sure we get six results 
    .All(r => r == 1)) // compare each result to 1 
    score += 8000; 
0

Ok, peu d'une question en désordre, mais si y ous recherchez le nombre de fois certaines valeurs sont REÇU je faire ce qui suit:

int[] DiceRolls(int noOfRolls, int noOfSides) 
{ 
    int[] results = new int[noOfSides]; 
    for (int i = 0; i < noOfRolls; i++) 
    { 
     results[rollSingleDie(noOfSides)]++; 
    } 
    return results; 
} 

Cela vous permettra de vérifier le nombre de fois une certaine valeur a été laminé.

Edit: Juste pour clarifier - 6 1s vous devez faire:

int[] rolls = DiceRolls(6, 6); 
if (rolls[0] == 6) 
{ 
    score += 8000; 
}