public override bool Entered(PushyField field, PushySquare square, PushyMoveDirection dir) { if (!(square is PushyFigure)) { return(false); } return(this.Move(field, dir)); }
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); }
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); }
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); } }
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); }
public override bool Entered(PushyField field, PushySquare square, PushyMoveDirection dir) { return(false); }
public override bool Entered(PushyField field, PushySquare square, PushyMoveDirection dir) { //Todo: Check if won return(true); }
public abstract bool Move(PushyField field, PushyMoveDirection dir);
public abstract bool Entered(PushyField field, PushySquare square, PushyMoveDirection dir);
public override bool Move(PushyField field, PushyMoveDirection dir) { return(false); }