代码之家  ›  专栏  ›  技术社区  ›  Ginxxx

如何计算多维数组c(Unity)上的特定值

  •  -1
  • Ginxxx  · 技术社区  · 6 年前

    我在计算我的 TIE 我列表中的值

    这是我的代码:

    string[,] table = new string[104, 15];
    int xIndex = 0;
    int yIndex = 0;
    
    for (int i = 0; i < list.Count; i++)
    {
        newString[0] += list[i].r;
        newString[0] += ",";
    }
    string[] newChars = newString[0].Split(',');
    string result = ""; // variable for the substring
    string previousValue_ = ""; // store here the newprevious value without the T
    int counterForTie = 0;
    int counterForRow = 1;
    int justMoveToY = 1;
    
    foreach (string previousValue in newChars)
    {
        //check the length so that it wont throw an error
        if (previousValue.Length > 1)
        {
              //get only the first letter of value P,B,T
              result = previousValue.Substring(0, 1);
        }
        else
        {
    
               result = "";
        }
    
     if (table.GetLength(0) < xIndex)
                {
                    break;
                }
    
                if (result.Equals(newPreviousValue) || result.Equals("T") && yIndex < table.GetLength(1))
                {
    
                    if (counterForRow == 1)
                    {
                        yIndex = 0;
                        table[xIndex, yIndex] = result;
                        counterForRow++;
    
                        if (firstDragonTail)
                        {
                            counterForTieSecondTime++;
                        }
                        else if (secondDragonTail)
                        {
                            counterForTieThirdTime++;
                        }
                        else
                        {
                            counterForTie++;
                        }
    
                    }
                    else
                    {
                        yIndex += 1;
                        table[xIndex, yIndex] = result;
                        if (firstDragonTail)
                        {
                            counterForTieSecondTime++;
                        }
                        else if (secondDragonTail)
                        {
                            counterForTieThirdTime++;
                        }
                        else
                        {
                            counterForTie++;
                        }
                    }
    
                }
                else if (result.Equals(newPreviousValue) && previousValue.Equals("T") && yIndex < table.GetLength(1))
                {
                    yIndex += 1;
                    table[xIndex, yIndex] = result;
    
                    if (firstDragonTail)
                    {
                        counterForTieSecondTime++;
                    }
                    else if (secondDragonTail)
                    {
                        counterForTieThirdTime++;
                    }
                    else
                    {
                        counterForTie++;
                    }
    
                }
                else
                {
                    if (justMoveToY == 1 && counterForRow == 1)
                    {
                        xIndex = 0;
                        yIndex = 0;
                        table[xIndex, yIndex] = result;
                        justMoveToY++;
                        counterForRow++;
                    }
                    else if (justMoveToY == 1)
                    {
                        xIndex = 0;
                        yIndex += 1;
                        table[xIndex, yIndex] = result;
                        justMoveToY++;
                    }
                    else {
    
                        if (firstDragonTail)
                        {
                            xIndex += 1;
                            yIndex = 0;
                            table[xIndex, yIndex] = result;
                            counterForTieSecondTime = 0;
                            if (counterForTieSecondTime == 0)
                            {
                                secondDragonTail = true;
                                firstDragonTail = false;
    
                            }
                            else
                            {
                                secondDragonTail = false;
                            }
                        }
                        else if (secondDragonTail)
                        {
                            xIndex += 1;
                            yIndex = 0;
                            table[xIndex, yIndex] = result;
                            counterForTieThirdTime = 0;
                            if (counterForTieThirdTime == 0)
                            {
                                thirdDragonTail = true;
                                secondDragonTail = false;
                            }
                            else
                            {
                                thirdDragonTail = false;
                            }
                        }
                        else
                        { 
                            xIndex += 1;
                            yIndex = 0;
                            table[xIndex, yIndex] = result;
                            counterForTie = 0;
                        }
                    }
                }
    
                previousValue_ = result;
    
                if (!result.Equals("T"))
                {
                    newPreviousValue = previousValue_;
                }
    
    }
    

    我的问题是我不能把所有的 领带 值。我只想数一数 领带 每列的值。

    例如,像这样的图像

    enter image description here

    如上图所示,我想知道 领带 值位于 PLAYER 值(蓝色)/ BANKER 值(红色)并计数 领带 如果它在 Player 列,反之亦然。

    我试过这个

    //count tie in a row
    if (result.Equals("T") && result.Equals("P"))
    {
          tieCounterPlayer++;
          Debug.Log("TIE FOR PLAYER :" + tieCounterPlayer);
    }
    else if(result.Equals("T") && result.Equals("B"))
    {
          tieCounterBanker++;
          Debug.Log("TIE FOR BANKER :" + tieCounterBanker);
    }
    

    但不幸的是,它不起作用。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ginxxx    6 年前

    不好意思问了

    这就是我所做的。

    if (newPreviousValue.Contains("B"))
    {
         if (result.Equals("T"))
         {
               tieCounterBanker++;
               Debug.Log("TIE FOR BANKER : " + tieCounterBanker);
         }
         else
         {
               tieCounterBanker = 0;
         }
    }
    else if(newPreviousValue.Contains("P"))
    {
          if (result.Equals("T"))
          {
                tieCounterPlayer++;
                Debug.Log("TIE FOR PLAYER : " + tieCounterPlayer);
          }
          else
          {
                tieCounterPlayer = 0;
          }
    }