List <Coordinate> GenerateObstaclesCoordinates(Node[] validChoices) { var allNodes = validChoices.ToList(); allNodes.Insert(0, startNode); allNodes.Insert(allNodes.Count, endNode); var obstaclesCoordinatesList = new List <Coordinate>(); int numberOfObstacles = GameManagerData.GetNumberOfObstacles(); for (int index = 0; index < numberOfObstacles; index++) { var obstacleCoordiateIsValid = false; while (!obstacleCoordiateIsValid && validChoices.Any()) { var node = GetRandomNode(validChoices); obstacleCoordiateIsValid = IsPathExcist(allNodes, node, startNode, endNode); if (obstacleCoordiateIsValid) { obstaclesCoordinatesList.Add(GetCoordinates(node)); node.isWalkable = false; } validChoices = validChoices.Except(new Node[] { node }).ToArray(); } } return(obstaclesCoordinatesList); }
private void PopulateData() { numberOfTheRuns.text = GetNumberOfTheRuns(); boardSize.text = GameManagerData.GetBoardSize().ToString(); obstacleCount.text = GameManagerData.GetNumberOfObstacles().ToString(); algorithmsUsed.text = GetUsedAlgorithms(); numberOfFieldsCheckedForFirstAlghoritm.text = GetNumberOfCheckedFields(CurrentAlgorithmType.A_star); numberOfFieldsCheckedForSecondAlghoritm.text = GetNumberOfCheckedFields(CurrentAlgorithmType.Greedy_suboptimal); timeSpentForFirstRunner.text = GetTimeSpent("Runner1"); timeSpentForSecondRunner.text = GetTimeSpent("Runner2"); }
void SetInputValue() { var fieldType = GetComponent <InputFieldTyperController>().fieldType; if (fieldType == InputFieldEnums.InputFieldsTypes.BoardInputField) { int value = (!string.IsNullOrEmpty(GetComponent <InputField>().text)) ? int.Parse(GetComponent <InputField>().text) : GameManagerData.GetBoardSize(); GameManagerData.SetBoardSize(value); } else if (fieldType == InputFieldEnums.InputFieldsTypes.ObstaclesInputField) { int value = (!string.IsNullOrEmpty(GetComponent <InputField>().text)) ? int.Parse(GetComponent <InputField>().text) : GameManagerData.GetNumberOfObstacles(); GameManagerData.SetNumberOfObstacles(value); } else if (fieldType == InputFieldEnums.InputFieldsTypes.StartPosXInputField) { int value = (!string.IsNullOrEmpty(GetComponent <InputField>().text)) ? int.Parse(GetComponent <InputField>().text) : GameManagerData.GetStartPointX(); GameManagerData.SetStartPointX(value); } else if (fieldType == InputFieldEnums.InputFieldsTypes.StartPosYInputField) { int value = (!string.IsNullOrEmpty(GetComponent <InputField>().text)) ? int.Parse(GetComponent <InputField>().text) : GameManagerData.GetStartPointY(); GameManagerData.SetStartPointY(value); } else if (fieldType == InputFieldEnums.InputFieldsTypes.EndPosXInputField) { int value = (!string.IsNullOrEmpty(GetComponent <InputField>().text)) ? int.Parse(GetComponent <InputField>().text) : GameManagerData.GetEndPointX(); GameManagerData.SetEndPointX(value); } else if (fieldType == InputFieldEnums.InputFieldsTypes.EndPosYInputField) { int value = (!string.IsNullOrEmpty(GetComponent <InputField>().text)) ? int.Parse(GetComponent <InputField>().text) : GameManagerData.GetEndPointY(); GameManagerData.SetEndPointY(value); } }
private void GenerateNewGame() { var maxNumberOfObstacles = GameManagerData.GetBoardSize() * GameManagerData.GetBoardSize() / 2; int newNumberOfObstacles = GameManagerData.GetNumberOfObstacles() + 1; if (maxNumberOfObstacles < newNumberOfObstacles) { CustomEvents.showWarningDialogEvent.Invoke("Number of obstacles can't be larger than: " + maxNumberOfObstacles); //half of the board size! } else { GameManagerData.SetNumberOfObstacles(newNumberOfObstacles); CustomEvents.createTableEvent.Invoke(); } }