示例#1
0
        public void Move()
        {
            if (InfectionMap[currentYPos][currentXPos])
            {
                switch (direction)
                {
                case EDirections.eUp:
                    direction = EDirections.eRight;
                    break;

                case EDirections.eDown:
                    direction = EDirections.eLeft;
                    break;

                case EDirections.eLeft:
                    direction = EDirections.eUp;
                    break;

                case EDirections.eRight:
                    direction = EDirections.eDown;
                    break;
                }
            }
            else
            {
                InfectionBursts++;
                switch (direction)
                {
                case EDirections.eUp:
                    direction = EDirections.eLeft;
                    break;

                case EDirections.eDown:
                    direction = EDirections.eRight;
                    break;

                case EDirections.eLeft:
                    direction = EDirections.eDown;
                    break;

                case EDirections.eRight:
                    direction = EDirections.eUp;
                    break;
                }
            }
            InfectionMap[currentYPos][currentXPos] = !InfectionMap[currentYPos][currentXPos];

            switch (direction)
            {
            case EDirections.eUp:
                currentYPos--;
                break;

            case EDirections.eDown:
                currentYPos++;
                break;

            case EDirections.eLeft:
                currentXPos--;
                break;

            case EDirections.eRight:
                currentXPos++;
                break;
            }
            if (!InfectionMap.ContainsKey(currentYPos))
            {
                InfectionMap.Add(currentYPos, new Dictionary <int, bool>());
            }
            if (!InfectionMap[currentYPos].ContainsKey(currentXPos))
            {
                InfectionMap[currentYPos].Add(currentXPos, false);
            }
        }
示例#2
0
        public void Move()
        {
            if (InfectionMap[currentYPos][currentXPos] == ENodeStates.eInfected)
            {
                switch (direction)
                {
                case EDirections.eUp:
                    direction = EDirections.eRight;
                    break;

                case EDirections.eDown:
                    direction = EDirections.eLeft;
                    break;

                case EDirections.eLeft:
                    direction = EDirections.eUp;
                    break;

                case EDirections.eRight:
                    direction = EDirections.eDown;
                    break;
                }
                InfectionMap[currentYPos][currentXPos] = ENodeStates.eFlagged;
            }
            else if (InfectionMap[currentYPos][currentXPos] == ENodeStates.eClean)
            {
                switch (direction)
                {
                case EDirections.eUp:
                    direction = EDirections.eLeft;
                    break;

                case EDirections.eDown:
                    direction = EDirections.eRight;
                    break;

                case EDirections.eLeft:
                    direction = EDirections.eDown;
                    break;

                case EDirections.eRight:
                    direction = EDirections.eUp;
                    break;
                }
                InfectionMap[currentYPos][currentXPos] = ENodeStates.eWeakened;
            }
            else if (InfectionMap[currentYPos][currentXPos] == ENodeStates.eFlagged)
            {
                switch (direction)
                {
                case EDirections.eUp:
                    direction = EDirections.eDown;
                    break;

                case EDirections.eDown:
                    direction = EDirections.eUp;
                    break;

                case EDirections.eLeft:
                    direction = EDirections.eRight;
                    break;

                case EDirections.eRight:
                    direction = EDirections.eLeft;
                    break;
                }
                InfectionMap[currentYPos][currentXPos] = ENodeStates.eClean;
            }
            else if (InfectionMap[currentYPos][currentXPos] == ENodeStates.eWeakened)
            {
                InfectionMap[currentYPos][currentXPos] = ENodeStates.eInfected;
                InfectionBursts++;
            }

            switch (direction)
            {
            case EDirections.eUp:
                currentYPos--;
                break;

            case EDirections.eDown:
                currentYPos++;
                break;

            case EDirections.eLeft:
                currentXPos--;
                break;

            case EDirections.eRight:
                currentXPos++;
                break;
            }

            if (!InfectionMap.ContainsKey(currentYPos))
            {
                InfectionMap.Add(currentYPos, new Dictionary <int, ENodeStates>());
            }
            if (!InfectionMap[currentYPos].ContainsKey(currentXPos))
            {
                InfectionMap[currentYPos].Add(currentXPos, ENodeStates.eClean);
            }
        }