public List <Utilities.ValidStep> getAllValidSteps(char i_shape) { Utilities.ValidStep curretnValidStep; Utilities.Point currentPoint; string stringShape = i_shape.ToString(); List <Utilities.ValidStep> AllValidSteps = new List <Utilities.ValidStep>(); for (int j = 0; j < m_HeightAndWidth; ++j) { for (int i = 0; i < m_HeightAndWidth; ++i) { if (isAValidPoint(i, j, stringShape)) { currentPoint = new Utilities.Point(i, j); curretnValidStep = new Utilities.ValidStep(currentPoint); checkAllDirectionsOfPoint(curretnValidStep, currentPoint, stringShape); AllValidSteps.Add(curretnValidStep); } } } return(AllValidSteps); }
private bool isStepIsValid(List <Utilities.ValidStep> i_validSteps, Utilities.Point i_pointToCheck) { int sizeOfList = i_validSteps.Count; Utilities.ValidStep[] CloneValidSteps = new Utilities.ValidStep[sizeOfList]; i_validSteps.CopyTo((CloneValidSteps)); foreach (Utilities.ValidStep currentStepToCheck in CloneValidSteps) { if (!(currentStepToCheck.GetPoint().X() == i_pointToCheck.X() && currentStepToCheck.GetPoint().Y() == i_pointToCheck.Y())) { i_validSteps.Remove(currentStepToCheck); } } return(i_validSteps.Count > 0); }
private void checkAllDirectionsOfPoint(Utilities.ValidStep i_validStep, Utilities.Point i_currentPoint, string i_stringShape) { if (checkContinueOfSequence(i_currentPoint, (int)Direction.LEFT, (int)Direction.NoChange, i_stringShape)) { i_validStep.AddDirection(new Utilities.Point((int)Direction.LEFT, (int)Direction.NoChange)); } if (checkContinueOfSequence(i_currentPoint, (int)Direction.LEFT, (int)Direction.UP, i_stringShape)) { i_validStep.AddDirection(new Utilities.Point((int)Direction.LEFT, (int)Direction.UP)); } if (checkContinueOfSequence(i_currentPoint, (int)Direction.NoChange, (int)Direction.UP, i_stringShape)) { i_validStep.AddDirection(new Utilities.Point((int)Direction.NoChange, (int)Direction.UP)); } if (checkContinueOfSequence(i_currentPoint, (int)Direction.RIGHT, (int)Direction.UP, i_stringShape)) { i_validStep.AddDirection(new Utilities.Point((int)Direction.RIGHT, (int)Direction.UP)); } if (checkContinueOfSequence(i_currentPoint, (int)Direction.RIGHT, (int)Direction.NoChange, i_stringShape)) { i_validStep.AddDirection(new Utilities.Point((int)Direction.RIGHT, (int)Direction.NoChange)); } if (checkContinueOfSequence(i_currentPoint, (int)Direction.RIGHT, (int)Direction.DOWN, i_stringShape)) { i_validStep.AddDirection(new Utilities.Point((int)Direction.RIGHT, (int)Direction.DOWN)); } if (checkContinueOfSequence(i_currentPoint, (int)Direction.NoChange, (int)Direction.DOWN, i_stringShape)) { i_validStep.AddDirection(new Utilities.Point((int)Direction.NoChange, (int)Direction.DOWN)); } if (checkContinueOfSequence(i_currentPoint, (int)Direction.LEFT, (int)Direction.DOWN, i_stringShape)) { i_validStep.AddDirection(new Utilities.Point((int)Direction.LEFT, (int)Direction.DOWN)); } }
public void updateBoard(Utilities.ValidStep i_pointToChange, string i_shape) { updateBoardByDirections(i_pointToChange.GetPoint().X(), i_pointToChange.GetPoint().Y(), i_pointToChange.GetList(), i_shape); }