示例#1
0
        /// <summary>
        /// Move left
        /// </summary>
        private void MoveLeft(Actor actor)
        {
            int sokoPosX = actor.PosX;
            int sokoPosY = actor.PosY;

            if (levelMap[sokoPosX - 1, sokoPosY] == ItemType.Floor ||
                IsThereTarget(sokoPosX - 1, sokoPosY))
            {
                if (IsThereTarget(sokoPosX - 1, sokoPosY))
                {
                    item2 = new Item(ItemType.SokobanOnGoal, sokoPosX - 1, sokoPosY);
                }
                else if (levelMap[sokoPosX - 1, sokoPosY] == ItemType.Floor)
                {
                    item2 = new Item(ItemType.Sokoban, sokoPosX - 1, sokoPosY);
                }

                UpdateCurrentSokobanPosition(sokoPosX, sokoPosY);
                UpdateCurrentPackagePosition(sokoPosX - 2, sokoPosY, Actor.MoveDirection.Left);
                actor.Move(Actor.MoveDirection.Left);
            }
        }
示例#2
0
        /// <summary>
        /// Move up
        /// </summary>
        private void MoveUp(Actor actor)
        {
            int sokoPosX = actor.PosX;
            int sokoPosY = actor.PosY;

            // If soko can move to the next position
            if (levelMap[sokoPosX, sokoPosY - 1] == ItemType.Floor ||
                IsThereTarget(sokoPosX, sokoPosY - 1))
            {
                if (IsThereTarget(sokoPosX, sokoPosY - 1))
                {
                    item2 = new Item(ItemType.SokobanOnGoal, sokoPosX, sokoPosY - 1);
                }
                else if (levelMap[sokoPosX, sokoPosY - 1] == ItemType.Floor)
                {
                    item2 = new Item(ItemType.Sokoban, sokoPosX, sokoPosY - 1);
                }

                UpdateCurrentSokobanPosition(sokoPosX, sokoPosY);
                UpdateCurrentPackagePosition(sokoPosX, sokoPosY - 2, Actor.MoveDirection.Up);
                actor.Move(Actor.MoveDirection.Up);
            }
        }
示例#3
0
        /// <summary>
        /// Move up
        /// </summary>
        private void MoveUp(Actor actor)
        {
            int sokoPosX = actor.PosX;
            int sokoPosY = actor.PosY;

            // If soko can move to the next position
            if (levelMap[sokoPosX, sokoPosY - 1] == ItemType.Floor ||
                IsThereTarget(sokoPosX, sokoPosY - 1))
            {
                if (IsThereTarget(sokoPosX, sokoPosY - 1))
                {
                    item2 = new Item(ItemType.SokobanOnGoal, sokoPosX, sokoPosY - 1);
                }
                else if (levelMap[sokoPosX, sokoPosY - 1] == ItemType.Floor)
                {
                    item2 = new Item(ItemType.Sokoban, sokoPosX, sokoPosY - 1);
                }

                UpdateCurrentSokobanPosition(sokoPosX, sokoPosY);
                UpdateCurrentPackagePosition(sokoPosX, sokoPosY - 2, Actor.MoveDirection.Up);
                actor.Move(Actor.MoveDirection.Up);
            }
        }
示例#4
0
        /// <summary>
        /// Move right
        /// </summary>
        private void MoveRight(Actor actor)
        {
            int sokoPosX = actor.PosX;
            int sokoPosY = actor.PosY;

            if (levelMap[sokoPosX + 1, sokoPosY] == ItemType.Floor ||
                IsThereTarget(sokoPosX + 1, sokoPosY))
            {
                if (IsThereTarget(sokoPosX + 1, sokoPosY))
                {
                    item2 = new Item(ItemType.SokobanOnGoal, sokoPosX + 1, sokoPosY);
                }
                else if (levelMap[sokoPosX + 1, sokoPosY] == ItemType.Floor)
                {
                    item2 = new Item(ItemType.Sokoban, sokoPosX + 1, sokoPosY);
                }

                UpdateCurrentSokobanPosition(sokoPosX, sokoPosY);
                UpdateCurrentPackagePosition(sokoPosX + 2, sokoPosY, Actor.MoveDirection.Right);
                actor.Move(Actor.MoveDirection.Right);
            }
        }