Пример #1
0
        public OrientacionPieza NuevaOrientacion()
        {
            OrientacionPieza op = OrientacionPieza.Arriba;
            Random           r  = new Random();
            int x = r.Next(1, 5);

            switch (x)
            {
            case 1:
                op = OrientacionPieza.Arriba;
                break;

            case 2:
                op = OrientacionPieza.Abajo;
                break;

            case 3:
                op = OrientacionPieza.Derecha;
                break;

            case 4:
                op = OrientacionPieza.Izquierda;
                break;
            }
            return(op);
        }
Пример #2
0
        public void MoverIzquierda(ref List <Cuadro> PiezaO, Tablero tab, OrientacionPieza op)
        {
            bool mover = true;

            foreach (Cuadro c in PiezaO)
            {
                if (c.Estado == false)
                {
                    foreach (Cuadro t in tab.cuadritos)
                    {
                        if (t.Estado == true)
                        {
                            if ((t.coordenadas.X == PiezaO[2].coordenadas.X - 20 && t.coordenadas.Y == PiezaO[2].coordenadas.Y) ||
                                (t.coordenadas.X == PiezaO[0].coordenadas.X - 20 && t.coordenadas.Y == PiezaO[0].coordenadas.Y))
                            {
                                //c.coordenadas.X -= 20;
                                mover = false;
                                break;
                            }
                        }
                    }
                    if ((PiezaO[2].coordenadas.X == 0))
                    {
                        mover = false;
                    }
                }
            }
            foreach (Cuadro c in PiezaO)
            {
                if (mover)
                {
                    c.coordenadas.X -= 20;
                }
            }
        }
Пример #3
0
        public void MoverDerecha(ref List <Cuadro> PiezaO, Tablero tab, OrientacionPieza op)
        {
            bool mover = true;

            foreach (Cuadro c in PiezaO)
            {
                if (c.Estado == false)
                {
                    foreach (Cuadro t in tab.cuadritos)
                    {
                        if (t.Estado == true)
                        {
                            if ((t.coordenadas.X == PiezaO[3].coordenadas.X + 20 && t.coordenadas.Y == PiezaO[3].coordenadas.Y) ||
                                (t.coordenadas.X == PiezaO[1].coordenadas.X + 20 && t.coordenadas.Y == PiezaO[1].coordenadas.Y))
                            {
                                //c.coordenadas.X -= 20;
                                mover = false;
                                break;
                            }
                        }
                    }
                    if ((PiezaO[PiezaO.Count - 1].coordenadas.X == 180))
                    {
                        mover = false;
                    }
                }
            }
            foreach (Cuadro c in PiezaO)
            {
                if (mover)
                {
                    c.coordenadas.X += 20;
                }
            }
        }
Пример #4
0
        public List <Cuadro> Formar(Point co, OrientacionPieza op)
        {
            List <Cuadro> PiezaL = new List <Cuadro>();
            bool          agrega = false;

            if (op == OrientacionPieza.Arriba)
            {
                for (int i = 0; i < 2; i++)
                {
                    for (int j = 0; j < 3; j++)
                    {
                        if (i == 0)
                        {
                            agrega = true;
                        }
                        else if (i == 1)
                        {
                            agrega = false;
                        }
                        if (i == 1 && j == 2)
                        {
                            agrega = true;
                        }
                        if (agrega == true)
                        {
                            PiezaL.Add(new Cuadro(co));
                        }
                        co.Y += 20;
                    }
                    co.Y -= 60;
                    co.X += 20;
                }
            }
            if (op == OrientacionPieza.Izquierda)
            {
                PiezaL.Add(new Cuadro(new Point(co.X - 40, co.Y)));
                PiezaL.Add(new Cuadro(new Point(co.X - 20, co.Y)));
                PiezaL.Add(new Cuadro(new Point(co.X, co.Y)));
                PiezaL.Add(new Cuadro(new Point(co.X, co.Y - 20)));
            }
            if (op == OrientacionPieza.Abajo)
            {
                PiezaL.Add(new Cuadro(new Point(co.X, co.Y + 20)));
                PiezaL.Add(new Cuadro(new Point(co.X, co.Y)));
                PiezaL.Add(new Cuadro(new Point(co.X, co.Y - 20)));
                PiezaL.Add(new Cuadro(new Point(co.X - 20, co.Y - 20)));
            }
            if (op == OrientacionPieza.Derecha)
            {
                PiezaL.Add(new Cuadro(new Point(co.X + 40, co.Y)));
                PiezaL.Add(new Cuadro(new Point(co.X + 20, co.Y)));
                PiezaL.Add(new Cuadro(new Point(co.X, co.Y)));
                PiezaL.Add(new Cuadro(new Point(co.X, co.Y + 20)));
            }
            return(PiezaL);
        }
Пример #5
0
        public bool MoverAbajo(ref List <Cuadro> PiezaO, Tablero tab, OrientacionPieza op)
        {
            bool verificar = false;

            foreach (Cuadro c in PiezaO)
            {
                if (c.Estado == false)
                {
                    foreach (Cuadro ta in tab.cuadritos)
                    {
                        if (ta.Estado == true)
                        {
                            if ((ta.coordenadas.X == PiezaO[PiezaO.Count - 1].coordenadas.X && ta.coordenadas.Y - 20 == PiezaO[PiezaO.Count - 1].coordenadas.Y) ||
                                (ta.coordenadas.X == PiezaO[PiezaO.Count - 2].coordenadas.X && ta.coordenadas.Y - 20 == PiezaO[PiezaO.Count - 2].coordenadas.Y &&
                                 ta.coordenadas.Y - 20 == PiezaO[PiezaO.Count - 1].coordenadas.Y))
                            {
                                foreach (Cuadro c2 in PiezaO)
                                {
                                    foreach (Cuadro t in tab.cuadritos)
                                    {
                                        if (c2.coordenadas.X == t.coordenadas.X && c2.coordenadas.Y == t.coordenadas.Y)
                                        {
                                            t.Estado  = true;
                                            t.Brocha4 = c2.Brocha;
                                        }
                                    }
                                    c2.Estado = true;
                                }
                                verificar = true;
                                break;
                            }
                        }
                    }
                    c.coordenadas.Y += 20;
                    if (PiezaO[PiezaO.Count - 1].coordenadas.Y == 380)
                    {
                        foreach (Cuadro c2 in PiezaO)
                        {
                            foreach (Cuadro t in tab.cuadritos)
                            {
                                if (c2.coordenadas.X == t.coordenadas.X && c2.coordenadas.Y == t.coordenadas.Y)
                                {
                                    t.Estado  = true;
                                    t.Brocha4 = c2.Brocha;
                                }
                            }
                            c2.Estado = true;
                        }
                        verificar = true;
                        break;
                    }
                }
            }
            return(verificar);
        }
Пример #6
0
        public List <Cuadro> Formar(Point co, OrientacionPieza op)
        {
            List <Cuadro> PiezaO = new List <Cuadro>();

            for (int i = 0; i < 2; i++)
            {
                for (int j = 0; j < 2; j++)
                {
                    PiezaO.Add(new Cuadro(co));
                    co.X += 20;
                }
                co.X -= 40;
                co.Y += 20;
            }
            return(PiezaO);
        }
Пример #7
0
        public List <Cuadro> Formar(Point co, OrientacionPieza op)
        {
            List <Cuadro> PiezaI = new List <Cuadro>();

            if (op == OrientacionPieza.Arriba)
            {
                for (int i = 0; i < 4; i++)
                {
                    PiezaI.Add(new Cuadro(co));
                    co.X += 20;
                }
            }
            if (op == OrientacionPieza.Izquierda)
            {
                co.Y -= 20;
                for (int i = 0; i < 4; i++)
                {
                    PiezaI.Add(new Cuadro(co));
                    co.Y += 20;
                }
            }
            if (op == OrientacionPieza.Abajo)
            {
                co.X -= 20;
                for (int i = 0; i < 4; i++)
                {
                    PiezaI.Add(new Cuadro(co));
                    co.X += 20;
                }
            }
            if (op == OrientacionPieza.Derecha)
            {
                co.Y -= 20;
                for (int i = 0; i < 4; i++)
                {
                    PiezaI.Add(new Cuadro(co));
                    co.Y += 20;
                }
            }
            return(PiezaI);
        }
Пример #8
0
        public List <Cuadro> Rotar(Tablero tab, ref OrientacionPieza op, List <Cuadro> Pieza)
        {
            switch (op)
            {
            case OrientacionPieza.Arriba:
                op = OrientacionPieza.Izquierda;
                break;

            case OrientacionPieza.Izquierda:
                op = OrientacionPieza.Abajo;
                break;

            case OrientacionPieza.Abajo:
                op = OrientacionPieza.Derecha;
                break;

            case OrientacionPieza.Derecha:
                op = OrientacionPieza.Arriba;
                break;
            }
            return(Formar(Pieza[1].coordenadas, op));
        }
Пример #9
0
        public bool MoverAbajo(ref List <Cuadro> PiezaT, Tablero tab, OrientacionPieza op)
        {
            bool verificar = false;

            if (op == OrientacionPieza.Arriba)
            {
                foreach (Cuadro c in PiezaT)
                {
                    if (c.Estado == false)
                    {
                        foreach (Cuadro ta in tab.cuadritos)
                        {
                            if (ta.Estado == true)
                            {
                                if ((ta.coordenadas.X == PiezaT[3].coordenadas.X && ta.coordenadas.Y - 20 == PiezaT[3].coordenadas.Y) ||
                                    (ta.coordenadas.X == PiezaT[0].coordenadas.X && ta.coordenadas.Y - 20 == PiezaT[0].coordenadas.Y && ta.coordenadas.Y == PiezaT[3].coordenadas.Y) ||
                                    (ta.coordenadas.X == PiezaT[2].coordenadas.X && ta.coordenadas.Y - 20 == PiezaT[2].coordenadas.Y && ta.coordenadas.Y - 20 == PiezaT[0].coordenadas.Y && ta.coordenadas.Y == PiezaT[3].coordenadas.Y))
                                {
                                    foreach (Cuadro c2 in PiezaT)
                                    {
                                        foreach (Cuadro t in tab.cuadritos)
                                        {
                                            if (c2.coordenadas.X == t.coordenadas.X && c2.coordenadas.Y == t.coordenadas.Y)
                                            {
                                                t.Estado  = true;
                                                t.Brocha4 = c2.Brocha6;
                                            }
                                        }
                                        c2.Estado = true;
                                    }
                                    verificar = true;
                                    break;
                                }
                            }
                        }
                        c.coordenadas.Y += 20;
                        if (PiezaT[PiezaT.Count - 1].coordenadas.Y == 380)
                        {
                            foreach (Cuadro c2 in PiezaT)
                            {
                                foreach (Cuadro t in tab.cuadritos)
                                {
                                    if (c2.coordenadas.X == t.coordenadas.X && c2.coordenadas.Y == t.coordenadas.Y)
                                    {
                                        t.Estado  = true;
                                        t.Brocha4 = c2.Brocha6;
                                    }
                                }
                                c2.Estado = true;
                            }
                            verificar = true;
                            break;
                        }
                    }
                }
            }
            if (op == OrientacionPieza.Izquierda)
            {
                foreach (Cuadro c in PiezaT)
                {
                    if (c.Estado == false)
                    {
                        foreach (Cuadro ta in tab.cuadritos)
                        {
                            if (ta.Estado == true)
                            {
                                if ((ta.coordenadas.X == PiezaT[3].coordenadas.X && ta.coordenadas.Y - 20 == PiezaT[3].coordenadas.Y) ||
                                    (ta.coordenadas.X == PiezaT[0].coordenadas.X && ta.coordenadas.Y - 20 == PiezaT[0].coordenadas.Y && PiezaT[3].coordenadas.Y == ta.coordenadas.Y - 40))
                                {
                                    foreach (Cuadro c2 in PiezaT)
                                    {
                                        foreach (Cuadro t in tab.cuadritos)
                                        {
                                            if (c2.coordenadas.X == t.coordenadas.X && c2.coordenadas.Y == t.coordenadas.Y)
                                            {
                                                t.Estado  = true;
                                                t.Brocha4 = c2.Brocha6;
                                            }
                                        }
                                        c2.Estado = true;
                                    }
                                    verificar = true;
                                    break;
                                }
                            }
                        }
                        c.coordenadas.Y += 20;
                        if (PiezaT[0].coordenadas.Y == 380 && PiezaT[3].coordenadas.Y == 360)
                        {
                            foreach (Cuadro c2 in PiezaT)
                            {
                                foreach (Cuadro t in tab.cuadritos)
                                {
                                    if (c2.coordenadas.X == t.coordenadas.X && c2.coordenadas.Y == t.coordenadas.Y)
                                    {
                                        t.Estado  = true;
                                        t.Brocha4 = c2.Brocha6;
                                    }
                                }
                                c2.Estado = true;
                            }
                            verificar = true;
                            break;
                        }
                    }
                }
            }
            if (op == OrientacionPieza.Abajo)
            {
                foreach (Cuadro c in PiezaT)
                {
                    if (c.Estado == false)
                    {
                        foreach (Cuadro ta in tab.cuadritos)
                        {
                            if (ta.Estado == true)
                            {
                                if ((ta.coordenadas.X == PiezaT[1].coordenadas.X && ta.coordenadas.Y - 20 == PiezaT[1].coordenadas.Y && ta.coordenadas.Y - 40 == PiezaT[3].coordenadas.Y) ||
                                    (ta.coordenadas.X == PiezaT[0].coordenadas.X && ta.coordenadas.Y - 20 == PiezaT[0].coordenadas.Y && ta.coordenadas.Y - 40 == PiezaT[3].coordenadas.Y) ||
                                    (ta.coordenadas.X == PiezaT[2].coordenadas.X && ta.coordenadas.Y - 20 == PiezaT[2].coordenadas.Y && ta.coordenadas.Y - 40 == PiezaT[3].coordenadas.Y))
                                {
                                    foreach (Cuadro c2 in PiezaT)
                                    {
                                        foreach (Cuadro t in tab.cuadritos)
                                        {
                                            if (c2.coordenadas.X == t.coordenadas.X && c2.coordenadas.Y == t.coordenadas.Y)
                                            {
                                                t.Estado  = true;
                                                t.Brocha4 = c2.Brocha6;
                                            }
                                        }
                                        c2.Estado = true;
                                    }
                                    verificar = true;
                                    break;
                                }
                            }
                        }
                        c.coordenadas.Y += 20;
                        if (PiezaT[1].coordenadas.Y == 380 && PiezaT[3].coordenadas.Y == 360)
                        {
                            foreach (Cuadro c2 in PiezaT)
                            {
                                foreach (Cuadro t in tab.cuadritos)
                                {
                                    if (c2.coordenadas.X == t.coordenadas.X && c2.coordenadas.Y == t.coordenadas.Y)
                                    {
                                        t.Estado  = true;
                                        t.Brocha4 = c2.Brocha6;
                                    }
                                }
                                c2.Estado = true;
                            }
                            verificar = true;
                            break;
                        }
                    }
                }
            }
            if (op == OrientacionPieza.Derecha)
            {
                foreach (Cuadro c in PiezaT)
                {
                    if (c.Estado == false)
                    {
                        foreach (Cuadro ta in tab.cuadritos)
                        {
                            if (ta.Estado == true)
                            {
                                if ((ta.coordenadas.X == PiezaT[3].coordenadas.X && ta.coordenadas.Y - 20 == PiezaT[3].coordenadas.Y) ||
                                    (ta.coordenadas.X == PiezaT[2].coordenadas.X && ta.coordenadas.Y - 20 == PiezaT[2].coordenadas.Y && ta.coordenadas.Y - 40 == PiezaT[3].coordenadas.Y))
                                {
                                    foreach (Cuadro c2 in PiezaT)
                                    {
                                        foreach (Cuadro t in tab.cuadritos)
                                        {
                                            if (c2.coordenadas.X == t.coordenadas.X && c2.coordenadas.Y == t.coordenadas.Y)
                                            {
                                                t.Estado  = true;
                                                t.Brocha4 = c2.Brocha6;
                                            }
                                        }
                                        c2.Estado = true;
                                    }
                                    verificar = true;
                                    break;
                                }
                            }
                        }
                        c.coordenadas.Y += 20;
                        if (PiezaT[2].coordenadas.Y == 380 && PiezaT[3].coordenadas.Y == 360)
                        {
                            foreach (Cuadro c2 in PiezaT)
                            {
                                foreach (Cuadro t in tab.cuadritos)
                                {
                                    if (c2.coordenadas.X == t.coordenadas.X && c2.coordenadas.Y == t.coordenadas.Y)
                                    {
                                        t.Estado  = true;
                                        t.Brocha4 = c2.Brocha6;
                                    }
                                }
                                c2.Estado = true;
                            }
                            verificar = true;
                            break;
                        }
                    }
                }
            }
            return(verificar);
        }
Пример #10
0
        public void MoverIzquierda(ref List <Cuadro> PiezaT, Tablero tab, OrientacionPieza op)
        {
            bool mover = true;

            if (op == OrientacionPieza.Arriba)
            {
                foreach (Cuadro c in PiezaT)
                {
                    if (c.Estado == false)
                    {
                        foreach (Cuadro t in tab.cuadritos)
                        {
                            if (t.Estado == true)
                            {
                                if ((t.coordenadas.X == PiezaT[3].coordenadas.X - 20 && t.coordenadas.Y == PiezaT[3].coordenadas.Y) ||
                                    (t.coordenadas.X == PiezaT[0].coordenadas.X - 20 && t.coordenadas.Y == PiezaT[0].coordenadas.Y))
                                {
                                    //c.coordenadas.X -= 20;
                                    mover = false;
                                    break;
                                }
                            }
                        }
                        if ((PiezaT[0].coordenadas.X == 0))
                        {
                            mover = false;
                        }
                    }
                }
            }
            if (op == OrientacionPieza.Izquierda)
            {
                foreach (Cuadro c in PiezaT)
                {
                    if (c.Estado == false)
                    {
                        foreach (Cuadro t in tab.cuadritos)
                        {
                            if (t.Estado == true)
                            {
                                if ((t.coordenadas.X == PiezaT[2].coordenadas.X - 20 && t.coordenadas.Y == PiezaT[2].coordenadas.Y) ||
                                    (t.coordenadas.X == PiezaT[1].coordenadas.X - 20 && t.coordenadas.Y == PiezaT[1].coordenadas.Y) ||
                                    (t.coordenadas.X == PiezaT[0].coordenadas.X - 20 && t.coordenadas.Y == PiezaT[0].coordenadas.Y))
                                {
                                    //c.coordenadas.X -= 20;
                                    mover = false;
                                    break;
                                }
                            }
                        }
                        if ((PiezaT[1].coordenadas.X == 0))
                        {
                            mover = false;
                        }
                    }
                }
            }
            if (op == OrientacionPieza.Abajo)
            {
                foreach (Cuadro c in PiezaT)
                {
                    if (c.Estado == false)
                    {
                        foreach (Cuadro t in tab.cuadritos)
                        {
                            if (t.Estado == true)
                            {
                                if ((t.coordenadas.X == PiezaT[3].coordenadas.X - 20 && t.coordenadas.Y == PiezaT[3].coordenadas.Y) ||
                                    (t.coordenadas.X == PiezaT[2].coordenadas.X - 20 && t.coordenadas.Y == PiezaT[2].coordenadas.Y))
                                {
                                    //c.coordenadas.X -= 20;
                                    mover = false;
                                    break;
                                }
                            }
                        }
                        if ((PiezaT[0].coordenadas.X == 0))
                        {
                            mover = false;
                        }
                    }
                }
            }
            if (op == OrientacionPieza.Derecha)
            {
                foreach (Cuadro c in PiezaT)
                {
                    if (c.Estado == false)
                    {
                        foreach (Cuadro t in tab.cuadritos)
                        {
                            if (t.Estado == true)
                            {
                                if ((t.coordenadas.X == PiezaT[2].coordenadas.X - 20 && t.coordenadas.Y == PiezaT[2].coordenadas.Y) ||
                                    (t.coordenadas.X == PiezaT[1].coordenadas.X - 20 && t.coordenadas.Y == PiezaT[1].coordenadas.Y) ||
                                    (t.coordenadas.X == PiezaT[0].coordenadas.X - 20 && t.coordenadas.Y == PiezaT[0].coordenadas.Y))
                                {
                                    //c.coordenadas.X -= 20;
                                    mover = false;
                                    break;
                                }
                            }
                        }
                        if ((PiezaT[1].coordenadas.X == 0))
                        {
                            mover = false;
                        }
                    }
                }
            }
            foreach (Cuadro c in PiezaT)
            {
                if (mover)
                {
                    c.coordenadas.X -= 20;
                }
            }
        }
Пример #11
0
 public Pieza(IPieza _pieza, Point co, OrientacionPieza op)
 {
     pieza  = _pieza;
     PiezaO = pieza.Formar(co, op);
 }
Пример #12
0
 public List <Cuadro> Rotar(Tablero tab, ref OrientacionPieza op, List <Cuadro> Pieza)
 {
     return(Pieza);
 }