Exemple #1
0
        public void NavigateRing()
        {
            if (unvisitedElements == 0)
            {
                setNextRingState();
                OnRingChange?.Invoke();
            }

            switch (nextAction)
            {
            case RingAction.IncreaseX:
                X++;
                if (X == ring)
                {
                    nextAction = RingAction.IncreaseY;
                }
                break;

            case RingAction.IncreaseY:
                Y++;
                if (Y == ring)
                {
                    nextAction = RingAction.DecreaseX;
                }
                break;

            case RingAction.DecreaseX:
                X--;
                if (X == -ring)
                {
                    nextAction = RingAction.DecreaseY;
                }
                break;

            case RingAction.DecreaseY:
                Y--;
                if (Y == -ring)
                {
                    nextAction = RingAction.IncreaseX;
                }
                break;
            }

            unvisitedElements--;
        }
Exemple #2
0
 private void setNextRingState()
 {
     ring++;
     unvisitedElements = 8 * ring;
     nextAction        = RingAction.IncreaseX;
 }