Example #1
0
 public override bool Entered(PushyField field, PushySquare square, PushyMoveDirection dir)
 {
     if (!(square is PushyFigure))
     {
         return(false);
     }
     return(this.Move(field, dir));
 }
Example #2
0
        public override bool Entered(PushyField field, PushySquare square, PushyMoveDirection dir)
        {
            if (this.ChildSquares?.Count > 0)
            {
                var oldSquares = new List <PushySquare>(this.ChildSquares);
                var failed     = oldSquares.Any(s => !s.Entered(field, square, dir));
                if (failed)
                {
                    return(false);
                }
            }

            this.ChildSquares.Add(square);
            return(true);
        }
Example #3
0
        private bool DoMove(PushyGame game, PushyMoveDirection dir)
        {
            var fieldCopy = game.Field.Copy();

            var figData = fieldCopy.GetFigureData("awd");
            var success = fieldCopy.TryMove(figData.Figure, figData.X, figData.Y, (PushyMoveDirection)dir);

            if (success)
            {
                game.Field = fieldCopy;
            }

            game.Field.TryMove(figData.Figure, figData.X, figData.Y, (PushyMoveDirection)dir);
            var gameStr = game.ToString();

            Console.WriteLine(gameStr);
            return(true);
        }
Example #4
0
        public PushyPosition GetRelativePos(PushyMoveDirection dir, PushyField field)
        {
            switch (dir)
            {
            case PushyMoveDirection.Up:
                if (X == 0)
                {
                    return(null);
                }
                return(new PushyPosition(X, Y - 1));

            case PushyMoveDirection.Right:
                if (X == field.Width - 1)
                {
                    return(null);
                }
                return(new PushyPosition(X + 1, Y));

            case PushyMoveDirection.Down:
                if (Y == field.Height - 1)
                {
                    return(null);
                }
                return(new PushyPosition(X, Y + 1));

            case PushyMoveDirection.Left:
                if (Y == 0)
                {
                    return(null);
                }
                return(new PushyPosition(X - 1, Y));

            case PushyMoveDirection.Unknown:
            default:
                return(null);
            }
        }
Example #5
0
        public override bool Move(PushyField field, PushyMoveDirection dir)
        {
            var parentSquare = field.GetParent(this);
            var myCoords     = field.GetSquareCoords(this);
            var relativePos  = myCoords.GetRelativePos(dir, field);

            if (relativePos == null)
            {
                return(false);
            }

            var targetSquare = field.Squares[relativePos.X][relativePos.Y];

            parentSquare.ChildSquares.Remove(this);

            var success = targetSquare.Entered(field, this, dir);

            if (!success)
            {
                return(false);
            }

            return(true);
        }
Example #6
0
 public override bool Entered(PushyField field, PushySquare square, PushyMoveDirection dir)
 {
     return(false);
 }
Example #7
0
        public override bool Entered(PushyField field, PushySquare square, PushyMoveDirection dir)
        {
            //Todo: Check if won

            return(true);
        }
Example #8
0
 public abstract bool Move(PushyField field, PushyMoveDirection dir);
Example #9
0
 public abstract bool Entered(PushyField field, PushySquare square, PushyMoveDirection dir);
Example #10
0
 public override bool Move(PushyField field, PushyMoveDirection dir)
 {
     return(false);
 }