示例#1
0
        /// <summary>
        /// Presmetuva vo koj pravec treba da se dvizi figurata (gore, dole, levo, desno)
        /// </summary>
        /// <param name="e">
        /// Momentalnata tocka kade se naodja kursorot koj se sporeduva so kliknata tocka</param>
        /// <returns>Vraka true dokolku e najden pravecot</returns>
        private bool calculateDirection(Point e)
        {
            int dX = firstClick.X - e.X;
            int dY = firstClick.Y - e.Y;

            int dist = (int)Math.Sqrt(dX * dX + dY * dY);

            if (dist > game.FieldDimension)
            {
                //rastojanieto treba da e pogolemo od poleto
                firstClick = Point.Empty;
                mouseDown  = false;
                //se presmetuva nasokata dokolku nemoze da si gi smenat mestata se vraka false
                if (dX >= 0 && dY >= 0)
                {
                    if (dX > dY)
                    {
                        if (!game.swap(Egg.Direction.Left))
                        {
                            return(false);
                        }
                    }
                    else
                    if (!game.swap(Egg.Direction.Up))
                    {
                        return(false);
                    }
                }
                else if (dX < 0 && dY >= 0)
                {
                    if (-dX > dY)
                    {
                        if (!game.swap(Egg.Direction.Right))
                        {
                            return(false);
                        }
                    }
                    else
                    if (!game.swap(Egg.Direction.Up))
                    {
                        return(false);
                    }
                }
                else if (dX >= 0 && dY < 0)
                {
                    if (dX > -dY)
                    {
                        if (!game.swap(Egg.Direction.Left))
                        {
                            return(false);
                        }
                    }
                    else
                    if (!game.swap(Egg.Direction.Down))
                    {
                        return(false);
                    }
                }
                else
                {
                    if (-dX > -dY)
                    {
                        if (!game.swap(Egg.Direction.Right))
                        {
                            return(false);
                        }
                    }
                    else
                    if (!game.swap(Egg.Direction.Down))
                    {
                        return(false);
                    }
                }
                return(true);
            }


            return(false);
        }