使用c#和Unity对我的骰子进行评分

时间:2015-04-02 13:28:29

标签: c# unity3d dice

只是想尝试能够按照规则集对我的骰子进行评分。规则范围从制作单个1卷100个点和3个1值400个,同花顺值得点数和6x1值8000个。

这是代码。

我不知道如何使代码单独计算分数

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;
}

2 个答案:

答案 0 :(得分:0)

请注意,在聚合数组(或任何其他可枚举数据)中的数据时,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;

答案 1 :(得分:0)

好的,有点混乱的问题,但如果你正在寻找收到某些价值的次数,我会做以下事情:

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

这将允许您检查某个值已滚动的次数。

编辑: 只是为了澄清 - 你需要做6个1:

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