Пример #1
0
        /// <summary>
        /// Метод выдающий случайное направление (Up, Down, Left, Right), но точно не то, что было указано во входящих параметрах
        /// </summary>
        /// <returns>случайное направление</returns>
        public static MoveDirection RandomDirectionButIndicated(MoveDirection oldDirection)
        {
            MoveDirection result = MoveDirection.NoMove;

            while (result == MoveDirection.NoMove || result == oldDirection)
            {
                result = StaticResources.RandomDirection();
            }
            return(result);
        }
Пример #2
0
        /// <summary>
        /// Метод перемещения врага в соседнюю клетку
        /// </summary>
        /// <param name="theEnemy">конкретный противник, которого следует переместить</param>
        /// <param name="gameMap">игровое поле, по которому будет перемещаться противник</param>
        public void MoveTheEnemy(Enemy theEnemy, List <Cell> gameMap)
        {
            //// обычно противник двигается в том же направлении, что и двигался на предыдущем ходу,
            ////поэтому в новое направление присваивается прошлое
            MoveDirection newDirection = theEnemy.LastDirection;
            //// однако, с шансом в "a" процентов противник может сменить направление.
            //// в данном случае это 20%. из которых 5% придутся на то же направление
            Random rannd = new Random();
            int    a     = 20;

            if (a > rannd.Next(1, 100))
            {
                newDirection = StaticResources.RandomDirectionButIndicated(theEnemy.LastDirection);
            }

            bool wasMoved = this.moverOfItems.MoveItem(theEnemy, newDirection, gameMap);

            //// если в результате движения противник уперся в стену или остался на месте по какой-либо другой причине, его направление меняется
            if (wasMoved == false)
            {
                theEnemy.LastDirection = StaticResources.RandomDirectionButIndicated(theEnemy.LastDirection);
            }
        }