/// <summary> /// Test the selected row in debug. /// </summary> public IEnumerator StartRowTest(int playerIndex, int startingRow) { if (!runningDebugTest) { RestartGame(); // Restart the game board. runningDebugTest = true; // In the debug editor, we do not want to start a test while another test is active. currentTurn = players[playerIndex]; // The first player to select a tile will be the player specified in the debug editor. currentPlayerIndex = playerIndex; Debug.Log("Starting Row Test"); int currentColumn = 0; // Current column in the row we are testing. We want to insert a tile here. while (mainGrid.GetMoveNumber() < GameGridSize * 2 - 1) // After (GameGridSize * 2) - 1, the game should be over. { if (currentTurn == players[playerIndex]) // If the current player selected is the player we want to win, we should place a tile in the row we specified. { mainGrid.Debug_InsertTile(startingRow, currentColumn++); } else // If it is the other players turn, select a random tile to set. Make sure the tile is not in the row we specified. { int randomRow = (int)Random.Range(0, GameGridSize); int randomColumn = (int)Random.Range(0, GameGridSize); while (randomRow == startingRow || mainGrid.IsTileInitialized(randomRow, randomColumn)) // If we happen to randomly choose the row we specified, find another row to select. { randomRow = (int)Random.Range(0, GameGridSize - 1); yield return(new WaitForEndOfFrame()); // Yield the CoRoutine so we don't hold up the rest of the game. } mainGrid.Debug_InsertTile(randomRow, randomColumn); // Finally, insert the tile we found. } yield return(new WaitForSeconds(.5f)); } Debug.Log("Test Ended"); runningDebugTest = false; } yield return(null); }