示例#1
0
        /// <summary>
        /// Gi menuva mestata na soodvetnite figuri
        /// </summary>
        /// <param name="direction"> pravec na menuvanje</param>
        /// <returns>true dokolku e vozmozna zamena, inaku false</returns>
        public bool swap(Egg.Direction direction)
        {
            currDir = direction;
            //menuvanje mesta so blok ne e dozvoleno
            if (Table[currEgg.X, currEgg.Y].isBrick()) return false;
            //vo zavisnost od pravecot se menuva pozicijata i mesto vo tabelata
            //currDir se menuva vo obratna nasoka bidejki se zameneti poziciite
            switch (direction)
            {
                case Egg.Direction.Up:
                    if (currEgg.X - 1 >= 0)
                    {
                        if (Table[currEgg.X - 1, currEgg.Y].isBrick()) return false;
                        Egg tmp = Table[currEgg.X, currEgg.Y];
                        Table[currEgg.X, currEgg.Y] = Table[currEgg.X - 1, currEgg.Y];
                        Table[currEgg.X - 1, currEgg.Y] = tmp;

                        int y = Table[currEgg.X, currEgg.Y].position.Y;
                        Table[currEgg.X, currEgg.Y].position = new Point(Table[currEgg.X, currEgg.Y].position.X, Table[currEgg.X - 1, currEgg.Y].position.Y);
                        Table[currEgg.X - 1, currEgg.Y].position = new Point(Table[currEgg.X, currEgg.Y].position.X, y);

                        currDir = Egg.Direction.Down;
                        return true;

                    }
                    break;
                case Egg.Direction.Right:
                    if (currEgg.Y + 1 < TableSize.Width)
                    {
                        if (Table[currEgg.X, currEgg.Y+1].isBrick()) return false;
                        Egg tmp = Table[currEgg.X, currEgg.Y];
                        Table[currEgg.X, currEgg.Y] = Table[currEgg.X, currEgg.Y + 1];
                        Table[currEgg.X, currEgg.Y + 1] = tmp;

                        int x = Table[currEgg.X, currEgg.Y].position.X;
                        Table[currEgg.X, currEgg.Y].position = new Point(Table[currEgg.X, currEgg.Y + 1].position.X, Table[currEgg.X, currEgg.Y].position.Y);
                        Table[currEgg.X, currEgg.Y + 1].position = new Point(x, Table[currEgg.X, currEgg.Y].position.Y);

                        currDir = Egg.Direction.Left;
                        return true;
                    }
                    break;
                case Egg.Direction.Left:
                    if (currEgg.Y - 1 >= 0)
                    {
                        if (Table[currEgg.X, currEgg.Y-1].isBrick()) return false;
                        Egg tmp = Table[currEgg.X, currEgg.Y];
                        Table[currEgg.X, currEgg.Y] = Table[currEgg.X, currEgg.Y - 1];
                        Table[currEgg.X, currEgg.Y - 1] = tmp;

                        int x = Table[currEgg.X, currEgg.Y].position.X;
                        Table[currEgg.X, currEgg.Y].position = new Point(Table[currEgg.X, currEgg.Y - 1].position.X, Table[currEgg.X, currEgg.Y].position.Y);
                        Table[currEgg.X, currEgg.Y - 1].position = new Point(x, Table[currEgg.X, currEgg.Y].position.Y);

                        currDir = Egg.Direction.Right;
                        return true;
                    }
                    break;
                case Egg.Direction.Down:
                    if (currEgg.X + 1 < TableSize.Height)
                    {
                        if (Table[currEgg.X+1, currEgg.Y].isBrick()) return false;
                        Egg tmp = Table[currEgg.X, currEgg.Y];
                        Table[currEgg.X, currEgg.Y] = Table[currEgg.X + 1, currEgg.Y];
                        Table[currEgg.X + 1, currEgg.Y] = tmp;

                        int y = Table[currEgg.X, currEgg.Y].position.Y;
                        Table[currEgg.X, currEgg.Y].position = new Point(Table[currEgg.X, currEgg.Y].position.X, Table[currEgg.X + 1, currEgg.Y].position.Y);
                        Table[currEgg.X + 1, currEgg.Y].position = new Point(Table[currEgg.X, currEgg.Y].position.X, y);

                        currDir = Egg.Direction.Up;
                        return true;
                    }
                    break;
            }
            return false;
        }
示例#2
0
        /// <summary>
        /// Gi menuva mestata na soodvetnite figuri
        /// </summary>
        /// <param name="direction"> pravec na menuvanje</param>
        /// <returns>true dokolku e vozmozna zamena, inaku false</returns>
        public bool swap(Egg.Direction direction)
        {
            currDir = direction;
            //menuvanje mesta so blok ne e dozvoleno
            if (Table[currEgg.X, currEgg.Y].isBrick())
            {
                return(false);
            }
            //vo zavisnost od pravecot se menuva pozicijata i mesto vo tabelata
            //currDir se menuva vo obratna nasoka bidejki se zameneti poziciite
            switch (direction)
            {
            case Egg.Direction.Up:
                if (currEgg.X - 1 >= 0)
                {
                    if (Table[currEgg.X - 1, currEgg.Y].isBrick())
                    {
                        return(false);
                    }
                    Egg tmp = Table[currEgg.X, currEgg.Y];
                    Table[currEgg.X, currEgg.Y]     = Table[currEgg.X - 1, currEgg.Y];
                    Table[currEgg.X - 1, currEgg.Y] = tmp;

                    int y = Table[currEgg.X, currEgg.Y].position.Y;
                    Table[currEgg.X, currEgg.Y].position     = new Point(Table[currEgg.X, currEgg.Y].position.X, Table[currEgg.X - 1, currEgg.Y].position.Y);
                    Table[currEgg.X - 1, currEgg.Y].position = new Point(Table[currEgg.X, currEgg.Y].position.X, y);

                    currDir = Egg.Direction.Down;
                    return(true);
                }
                break;

            case Egg.Direction.Right:
                if (currEgg.Y + 1 < TableSize.Width)
                {
                    if (Table[currEgg.X, currEgg.Y + 1].isBrick())
                    {
                        return(false);
                    }
                    Egg tmp = Table[currEgg.X, currEgg.Y];
                    Table[currEgg.X, currEgg.Y]     = Table[currEgg.X, currEgg.Y + 1];
                    Table[currEgg.X, currEgg.Y + 1] = tmp;

                    int x = Table[currEgg.X, currEgg.Y].position.X;
                    Table[currEgg.X, currEgg.Y].position     = new Point(Table[currEgg.X, currEgg.Y + 1].position.X, Table[currEgg.X, currEgg.Y].position.Y);
                    Table[currEgg.X, currEgg.Y + 1].position = new Point(x, Table[currEgg.X, currEgg.Y].position.Y);

                    currDir = Egg.Direction.Left;
                    return(true);
                }
                break;

            case Egg.Direction.Left:
                if (currEgg.Y - 1 >= 0)
                {
                    if (Table[currEgg.X, currEgg.Y - 1].isBrick())
                    {
                        return(false);
                    }
                    Egg tmp = Table[currEgg.X, currEgg.Y];
                    Table[currEgg.X, currEgg.Y]     = Table[currEgg.X, currEgg.Y - 1];
                    Table[currEgg.X, currEgg.Y - 1] = tmp;

                    int x = Table[currEgg.X, currEgg.Y].position.X;
                    Table[currEgg.X, currEgg.Y].position     = new Point(Table[currEgg.X, currEgg.Y - 1].position.X, Table[currEgg.X, currEgg.Y].position.Y);
                    Table[currEgg.X, currEgg.Y - 1].position = new Point(x, Table[currEgg.X, currEgg.Y].position.Y);

                    currDir = Egg.Direction.Right;
                    return(true);
                }
                break;

            case Egg.Direction.Down:
                if (currEgg.X + 1 < TableSize.Height)
                {
                    if (Table[currEgg.X + 1, currEgg.Y].isBrick())
                    {
                        return(false);
                    }
                    Egg tmp = Table[currEgg.X, currEgg.Y];
                    Table[currEgg.X, currEgg.Y]     = Table[currEgg.X + 1, currEgg.Y];
                    Table[currEgg.X + 1, currEgg.Y] = tmp;

                    int y = Table[currEgg.X, currEgg.Y].position.Y;
                    Table[currEgg.X, currEgg.Y].position     = new Point(Table[currEgg.X, currEgg.Y].position.X, Table[currEgg.X + 1, currEgg.Y].position.Y);
                    Table[currEgg.X + 1, currEgg.Y].position = new Point(Table[currEgg.X, currEgg.Y].position.X, y);

                    currDir = Egg.Direction.Up;
                    return(true);
                }
                break;
            }
            return(false);
        }