Esempio n. 1
0
        private void StartMovement()
        {
            if (!collapse.PredictCollapse())//якщо не очікується зіткнення-зробити крок
            {
                ghost.MoveGhost();
            }
            else
            {
                return;
            }
            Direction dir          = ghost.currentDirection;
            MyPoint   endAnimPoint = converter.ToCanvasCoordinates(ghost.currentPosition);

            if (dir == Direction.up)
            {
                double          duration = Math.Abs(endAnimPoint.Y - currentGhostPosition.Y) / 100.0;
                Storyboard      sb       = new Storyboard();
                DoubleAnimation anim     = new DoubleAnimation(currentGhostPosition.Y, endAnimPoint.Y, TimeSpan.FromSeconds(duration));
                Storyboard.SetTarget(anim, ghostImage);
                Storyboard.SetTargetProperty(anim, new PropertyPath("(Canvas.Top)"));
                sb.Children.Add(anim);
                sb.Begin();
                currentGhostPosition = endAnimPoint;
            }
            else if (dir == Direction.down)
            {
                double          duration = Math.Abs(endAnimPoint.Y - currentGhostPosition.Y) / 100.0;
                Storyboard      sb       = new Storyboard();
                DoubleAnimation anim     = new DoubleAnimation(currentGhostPosition.Y, endAnimPoint.Y, TimeSpan.FromSeconds(duration));
                Storyboard.SetTarget(anim, ghostImage);
                Storyboard.SetTargetProperty(anim, new PropertyPath("(Canvas.Top)"));
                sb.Children.Add(anim);
                sb.Begin();
                currentGhostPosition = endAnimPoint;
            }
            else if (dir == Direction.left)
            {
                double          duration = Math.Abs(endAnimPoint.X - currentGhostPosition.X) / 100.0;
                Storyboard      sb       = new Storyboard();
                DoubleAnimation anim     = new DoubleAnimation(currentGhostPosition.X, endAnimPoint.X, TimeSpan.FromSeconds(duration));
                Storyboard.SetTarget(anim, ghostImage);
                Storyboard.SetTargetProperty(anim, new PropertyPath("(Canvas.Left)"));
                sb.Children.Add(anim);
                sb.Begin();
                currentGhostPosition = endAnimPoint;
            }
            else if (dir == Direction.right)
            {
                double          duration = Math.Abs(endAnimPoint.X - currentGhostPosition.X) / 100.0;
                Storyboard      sb       = new Storyboard();
                DoubleAnimation anim     = new DoubleAnimation(currentGhostPosition.X, endAnimPoint.X, TimeSpan.FromSeconds(duration));
                Storyboard.SetTarget(anim, ghostImage);
                Storyboard.SetTargetProperty(anim, new PropertyPath("(Canvas.Left)"));
                sb.Children.Add(anim);
                sb.Begin();
                currentGhostPosition = endAnimPoint;
            }
        }