Как сохранить значение от 2-го до последнего значения, чтобы сравнить с новым значением - PullRequest
0 голосов
/ 17 мая 2018

У меня есть этот код

string[,] table = new string[104, 15];
int xIndex = -1;
int yIndex = 0;
string newPrevious = "placeholder";
//P = BLUE, B = RED, T = GREEN
string[] strData = {"P  ,B  ,P  ,P B,B  ,P  ,B  ,T  ,P  ,P  "};

//conditions
string[] scoreBoard = new string[]
{"P  ", "B  ", "T  ",
 "P B","B P" };
string OriginalData = "";


void Start(){
    StartCoroutine ("Win_Log");
}

IEnumerator Win_Log(){

    yield return new WaitForEndOfFrame ();

    for (int i = 0; i < strData.Length; i++) {
        OriginalData += strData [i];
        OriginalData += ",";
    }
    string[] newNewData = OriginalData.Split (',');
    string result = "";

    foreach (string newStrData in newNewData) {
        Debug.Log ("This is the data : " + newStrData);

        GameObject o = Instantiate (prefab_gameobject) as GameObject;
        o.transform.SetParent (pos_big_road);
        o.transform.localScale = Vector3.one;

        img = (RawImage)o.GetComponent<RawImage> ();

        //check the length so that it won't throw an exception
        if (newStrData.Length > 1) {
            //get only the first letter of the value P,B,T
            result = newStrData.Substring (0, 1);
        } 
        else {
            result = "";
        }

        #region BIG ROAD
        if(table.GetLength(0) < xIndex){
            break;
        }

        if (result.Equals (newPrevious) || result.Equals("T") && yIndex < table.GetLength (1)) {
            yIndex += 1;
            table [xIndex, yIndex] = result;
        }
        else if(newPrevious.Equals("T") && yIndex < table.GetLength (1)){
            yIndex += 1;
            table [xIndex, yIndex] = result;
        }
        else
        {
            xIndex += 1;
            yIndex = 0;
            table [xIndex, yIndex] = result;
        }
        newPrevious = result ;

        o.transform.localPosition = new Vector3 (xIndex * 93, yIndex * -93, 0f);

В чем моя проблема заключается в следующем

enter image description here

Как вы можете видеть на последнемстолбец

КРАСНЫЙ, ЗЕЛЕНЫЙ, СИНИЙ, СИНИЙ

, значение которого равно

//P = BLUE, B = RED, T = GREEN
string[] strData = {"P  ,B  ,P  ,P B,B  ,P  ,B  ,T  ,P  ,P  "};

BLUE, BLUE должно быть наследующий ряд, потому что он не равен переменной newPrevious, что означает, что я говорил о RED выше значения GREEN.Таким образом, вы должны быть в замешательстве по этому поводу, но значение GREEN больше похоже на игнорирование, то, что я имею в виду под игнорированием, выглядит так:

enter image description here

Теперь наВ последнем столбце есть значение

СИНИЙ, СИНИЙ, ЗЕЛЕНЫЙ, КРАСНЫЙ, КРАСНЫЙ

, значение которого равно

//P = BLUE, B = RED, T = GREEN
string[] strData = {"P  ,B  ,P  ,P B,B  ,P  ,P  ,T  ,B  ,B  "};

.на изображении RED, RED должно быть в следующей строке, потому что оно не равно переменной newPrevious, что означает, что я говорил о BLUE выше значения GREEN.

NOW WHATЯ ХОЧУ, ЧТО Я НЕ МОГУ ДОСТИГАТЬ:

Чего я не могу достичь, так это поместить значение newPrevious в переменную, в которой оно будет хранить значение до GREEN, чтобы я могсравните его с новым значением newPrevious.

Например, на рисунке выше есть значение

КРАСНЫЙ, ЗЕЛЕНЫЙ, СИНИЙ, СИНИЙ

iхочу сохранить значение RED, чтобы я мог сравнить его со значением BLUE, чтобы я мог увеличивать его с xIndex вместо yIndex

EDIT

Первое ожидаемое изображение должно быть таким:

enter image description here

И второе ожидаемое изображение должно быть таким:

enter image description here

1 Ответ

0 голосов
/ 17 мая 2018

Возьмите другую переменную «предыдущий». Установите для него значение newPrevious, как вы это делаете сейчас, и в следующей итерации проверьте, изменилось ли оно.

Заменить это

newPrevious = result ;

С этим

if(!result.Equals("T")) 
   newPrevious = result ; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...