bool IsSolvable(PuzzleCombination _combination, TurbineButtonData newButton) { int[] currentEs = _combination.InitialEValues; currentEs[0] -= newButton.E1Modifier; if (currentEs[0] < 0 || currentEs[0] > 100) { return(false); } currentEs[1] -= newButton.E2Modifier; if (currentEs[1] < 0 || currentEs[1] > 100) { return(false); } currentEs[2] -= newButton.E3Modifier; if (currentEs[2] < 0 || currentEs[2] > 100) { return(false); } currentEs[3] -= newButton.E4Modifier; if (currentEs[3] < 0 || currentEs[3] > 100) { return(false); } return(true); }
private void GenerateNewPuzzleCombination() { PuzzleCombination newComb = new PuzzleCombination(); TurbineButtonData possibleButton; List <TurbineButtonData> usedButtons = new List <TurbineButtonData>(); //Numero di pulsanti richiesti; for (int i = 0; i < LabledButtons.Count; i++) { if (i < 2) { while (newComb.Solution.Count == i) { possibleButton = GetUnchosenButton(usedButtons); if (IsSolvable(newComb, possibleButton)) { newComb.Solution.Add(possibleButton); usedButtons.Add(possibleButton); break; } } } else { possibleButton = GetUnchosenButton(usedButtons); usedButtons.Add(possibleButton); newComb.Fillers.Add(possibleButton); } } newComb.ResetEValues(); combination = newComb; }