void checkRow(int value) { GameObject[] blocks = GameObject.FindGameObjectsWithTag("FigBlock"); //Все фигуры на сцене int count = 0; //счётчик блоков фигур найденных в строке for(int i=1; i<_board.GetLength(0)-1; i++){//идём по каждой строчке if(_board[i,value]==1){//проверяем на наличе count++;//если нашли блок увелчичиваем счётчик } } if(value==_bustedHeight && count>0){//если это высшая точка поля и там есть хоть один блок - "потрачено" _busted = true; _bestScoreFile = this.GetComponent<BestScoreSave>(); int tempScore = _bestScoreFile.ReadBestScore(); if (tempScore<_score) { _bestScoreFile.SaveBestScore(); _bestScoreFile.WarningWindowsExit(false); } else _bestScoreFile.WarningWindowsExit(true); } if(count==10){//если счётчик увелчилися до 10 - ширины поля //начинаем с низа игровой доски for(int cj=value; cj<_board.GetLength(1)-3; cj++){ for(int ci=1; ci<_board.GetLength(0)-1; ci++){ foreach(GameObject go in blocks){ int height = Mathf.RoundToInt(go.transform.position.y); int xPos = Mathf.RoundToInt(go.transform.position.x); if(xPos == ci && height == cj){ if(height == value){//строчка, которую требуется уничтожит _board[xPos,height] = 0;//обнуляем Destroy(go.gameObject); _score = _score + 10; } else if(height > value){ _board[xPos,height] = 0;//старую позицию обнуляем _board[xPos,height-1] = 1;//делаем новую позицию go.transform.position = new Vector3(xPos, height-1, go.transform.position.z);//сдвигаем блоки вниз } } } } } checkRow(value); //после продвижения блоков вниз, снова проверяем на заполненность строчки } else if(value+1<_board.GetLength(1)-3){ checkRow(value+1); //проверяем строчку над } }
void checkRow(int value) { GameObject[] blocks = GameObject.FindGameObjectsWithTag("FigBlock"); //Все фигуры на сцене int count = 0; //счётчик блоков фигур найденных в строке for (int i = 1; i < _board.GetLength(0) - 1; i++) //идём по каждой строчке { if (_board[i, value] == 1) //проверяем на наличе { count++; //если нашли блок увелчичиваем счётчик } } if (value == _bustedHeight && count > 0) //если это высшая точка поля и там есть хоть один блок - "потрачено" { _busted = true; _bestScoreFile = this.GetComponent <BestScoreSave>(); int tempScore = _bestScoreFile.ReadBestScore(); if (tempScore < _score) { _bestScoreFile.SaveBestScore(); _bestScoreFile.WarningWindowsExit(false); } else { _bestScoreFile.WarningWindowsExit(true); } } if (count == 10) //если счётчик увелчилися до 10 - ширины поля //начинаем с низа игровой доски { for (int cj = value; cj < _board.GetLength(1) - 3; cj++) { for (int ci = 1; ci < _board.GetLength(0) - 1; ci++) { foreach (GameObject go in blocks) { int height = Mathf.RoundToInt(go.transform.position.y); int xPos = Mathf.RoundToInt(go.transform.position.x); if (xPos == ci && height == cj) { if (height == value) //строчка, которую требуется уничтожит { _board[xPos, height] = 0; //обнуляем Destroy(go.gameObject); _score = _score + 10; } else if (height > value) { _board[xPos, height] = 0; //старую позицию обнуляем _board[xPos, height - 1] = 1; //делаем новую позицию go.transform.position = new Vector3(xPos, height - 1, go.transform.position.z); //сдвигаем блоки вниз } } } } } checkRow(value); //после продвижения блоков вниз, снова проверяем на заполненность строчки } else if (value + 1 < _board.GetLength(1) - 3) { checkRow(value + 1); //проверяем строчку над } }