Пример #1
0
        public void Oznaci()
        {
            Oznaka = new bool[Visina][];
            for (int a = 0; a < Sirina; a++)
            {
                Oznaka[a] = new bool[Sirina];
            }


            for (int i = 0; i < Figuri.Length; i++)
            {
                Figura f = Figuri[i];
                for (int j = 0; j < f.Kocki.Length; j++)
                {
                    Kocka k = f.Kocki[j];
                    Oznaka[k.PozicijaX][k.PozicijaY] = true;
                }
            }
            for (int k = 0; k < Granica.Kocki.Length; k++)
            {
                Kocka koc = Granica.Kocki[k];
                Oznaka[koc.PozicijaX][koc.PozicijaY] = true;
            }
            for (int k = 0; k < Izlez.Kocki.Length; k++)
            {
                Kocka koc = Izlez.Kocki[k];
                Oznaka[koc.PozicijaX][koc.PozicijaY] = true;
            }
            for (int k = 0; k < Cel.Kocki.Length; k++)
            {
                Kocka koc = Cel.Kocki[k];
                Oznaka[koc.PozicijaX][koc.PozicijaY] = true;
            }
        }
Пример #2
0
 public Figura(Kocka[] koc, Brush b)
 {
     Kocki = koc;
     B = b;
 }
Пример #3
0
        protected override void OnMouseDown(MouseEventArgs e)
        {
            fateno = false;
            if (po != null && mrdnato == true)
            {

                for (int i = 0; i < po.Figuri.Length; i++)
                {
                    Figura f = po.Figuri[i];
                    for (int j = 0; j < f.Kocki.Length; j++)
                    {
                        Kocka k = f.Kocki[j];
                        if ((k.PozicijaY*35 <= x && k.PozicijaX*35  <= y) && ((k.PozicijaY*35) + 35 >= x && (k.PozicijaX*35) + 35 >= y))
                        {
                            fateno = true;
                            br_Fig = i;
                            Fig = f;

                        }
                    }
                }
                if (fateno)
                {
                    int pomx = e.X;
                    int pomy = e.Y;

                    if (pomx > x + 20 && pomx < x + 90 && pomy < y + 40 && pomy > y - 40)
                    {
                        Nas = 2;
                    }
                    else if (pomx > x - 90 && pomx < x - 20 && pomy < y + 40 && pomy > y - 40)
                    {
                        Nas = 1;

                    }
                    else if (pomy > x + 20 && pomy < y + 90 && pomx < x + 40 && pomx > x - 40)
                    {
                        Nas = 4;
                    }
                    else if (pomy < y - 20 && pomy > y - 90 && pomx < x + 40 && pomx > x - 40)
                    {
                        Nas = 3;
                    }

                }
            }

            if (po != null && Fig != null)
            {
                if (mrdnato)
                {
                    po.Oznaci();
                    if (po.Pomesti(Fig, Nas) == 1)
                    {

                        Potezi++;
                        label4.Text = "" + Potezi;
                        if(Nas == 1)
                        {
                            for (int i = 0; i < Fig.Kocki.Length; i++)
                            {
                                Kocka k = new Kocka(Fig.Kocki[i].PozicijaX, Fig.Kocki[i].PozicijaY -1);
                                Fig.Kocki[i] = k;
                            }
                        }
                        if(Nas == 2)
                        {
                            for (int i = 0; i < Fig.Kocki.Length; i++)
                            {
                                Kocka k = new Kocka(Fig.Kocki[i].PozicijaX , Fig.Kocki[i].PozicijaY +1);
                                Fig.Kocki[i] = k;
                            }
                        }
                        if(Nas == 3)
                        {
                            for (int i = 0; i < Fig.Kocki.Length; i++)
                            {
                                Kocka k = new Kocka(Fig.Kocki[i].PozicijaX -1, Fig.Kocki[i].PozicijaY );
                                Fig.Kocki[i] = k;
                            }
                        }
                        if(Nas == 4)
                        {
                            for (int i = 0; i < Fig.Kocki.Length; i++)
                            {
                                Kocka k = new Kocka(Fig.Kocki[i].PozicijaX +1, Fig.Kocki[i].PozicijaY);
                                Fig.Kocki[i] = k;
                            }
                        }

                        po.Figuri[br_Fig] = Fig;
                        po.Oznaci();
                        this.OnPaint(null);

                    }
                    if (po.Pomesti(Fig, Nas) == 2)
                    {
                        MessageBox.Show("Успешно завршена игра за: " + Min + " минути и " + Sec + " секунди во: " + Potezi +" потези!");
                        Close();

                    }
                }
                Prove = false;
            }
            mrdnato = false;
            Fig = null;
        }
Пример #4
0
        protected override void OnMouseDown(MouseEventArgs e)
        {
            fateno = false;
            if (po != null && mrdnato == true)
            {
                for (int i = 0; i < po.Figuri.Length; i++)
                {
                    Figura f = po.Figuri[i];
                    for (int j = 0; j < f.Kocki.Length; j++)
                    {
                        Kocka k = f.Kocki[j];
                        if ((k.PozicijaY * 35 <= x && k.PozicijaX * 35 <= y) && ((k.PozicijaY * 35) + 35 >= x && (k.PozicijaX * 35) + 35 >= y))
                        {
                            fateno = true;
                            br_Fig = i;
                            Fig    = f;
                        }
                    }
                }
                if (fateno)
                {
                    int pomx = e.X;
                    int pomy = e.Y;

                    if (pomx > x + 20 && pomx < x + 90 && pomy < y + 40 && pomy > y - 40)
                    {
                        Nas = 2;
                    }
                    else if (pomx > x - 90 && pomx < x - 20 && pomy < y + 40 && pomy > y - 40)
                    {
                        Nas = 1;
                    }
                    else if (pomy > x + 20 && pomy < y + 90 && pomx < x + 40 && pomx > x - 40)
                    {
                        Nas = 4;
                    }
                    else if (pomy < y - 20 && pomy > y - 90 && pomx < x + 40 && pomx > x - 40)
                    {
                        Nas = 3;
                    }
                }
            }


            if (po != null && Fig != null)
            {
                if (mrdnato)
                {
                    po.Oznaci();
                    if (po.Pomesti(Fig, Nas) == 1)
                    {
                        Potezi++;
                        label4.Text = "" + Potezi;
                        if (Nas == 1)
                        {
                            for (int i = 0; i < Fig.Kocki.Length; i++)
                            {
                                Kocka k = new Kocka(Fig.Kocki[i].PozicijaX, Fig.Kocki[i].PozicijaY - 1);
                                Fig.Kocki[i] = k;
                            }
                        }
                        if (Nas == 2)
                        {
                            for (int i = 0; i < Fig.Kocki.Length; i++)
                            {
                                Kocka k = new Kocka(Fig.Kocki[i].PozicijaX, Fig.Kocki[i].PozicijaY + 1);
                                Fig.Kocki[i] = k;
                            }
                        }
                        if (Nas == 3)
                        {
                            for (int i = 0; i < Fig.Kocki.Length; i++)
                            {
                                Kocka k = new Kocka(Fig.Kocki[i].PozicijaX - 1, Fig.Kocki[i].PozicijaY);
                                Fig.Kocki[i] = k;
                            }
                        }
                        if (Nas == 4)
                        {
                            for (int i = 0; i < Fig.Kocki.Length; i++)
                            {
                                Kocka k = new Kocka(Fig.Kocki[i].PozicijaX + 1, Fig.Kocki[i].PozicijaY);
                                Fig.Kocki[i] = k;
                            }
                        }

                        po.Figuri[br_Fig] = Fig;
                        po.Oznaci();
                        this.OnPaint(null);
                    }
                    if (po.Pomesti(Fig, Nas) == 2)
                    {
                        MessageBox.Show("Успешно завршена игра за: " + Min + " минути и " + Sec + " секунди во: " + Potezi + " потези!");
                        Close();
                    }
                }
                Prove = false;
            }
            mrdnato = false;
            Fig     = null;
        }
Пример #5
0
        protected override void OnPaint(PaintEventArgs e)
        {
            g.Clear(Color.Black);

            bool[][] prov = po.Oznaka;
            Brush    b    = new SolidBrush(Color.Black);

            b1 = new SolidBrush(Color.White);
            Pen    pe   = new Pen(b, 4);
            Pen    pe1  = new Pen(b1, 2);
            int    broj = 35;
            Figura izl  = po.Izlez;

            for (int l = 0; l < izl.Kocki.Length; l++)
            {
                int       br1 = izl.Kocki[l].PozicijaX;
                int       br2 = izl.Kocki[l].PozicijaY;
                Rectangle r   = new Rectangle(broj * br2, broj * br1, broj, broj);
                g.FillRectangle(izl.B, r);
            }
            for (int i = 0; i < po.Figuri.Length; i++)
            {
                Figura f = po.Figuri[i];
                for (int j = 0; j < f.Kocki.Length; j++)
                {
                    int       br1 = f.Kocki[j].PozicijaX;
                    int       br2 = f.Kocki[j].PozicijaY;
                    Rectangle r   = new Rectangle(broj * br2, broj * br1, broj, broj);
                    g.FillRectangle(f.B, r);
                }
                for (int m = 0; m < f.Kocki.Length; m++)
                {
                    int  br1   = f.Kocki[m].PozicijaX;
                    int  br2   = f.Kocki[m].PozicijaY;
                    bool flag1 = true;
                    bool flag2 = true;
                    bool flag3 = true;
                    bool flag4 = true;
                    for (int n = 0; n < f.Kocki.Length; n++)
                    {
                        Kocka k = f.Kocki[n];
                        if (k.PozicijaX == br1 + 1 && k.PozicijaY == br2)
                        {
                            flag1 = false;
                        }
                        if (k.PozicijaX == br1 - 1 && k.PozicijaY == br2)
                        {
                            flag2 = false;
                        }
                        if (k.PozicijaX == br1 && k.PozicijaY == br2 + 1)
                        {
                            flag3 = false;
                        }
                        if (k.PozicijaX == br1 && k.PozicijaY == br2 - 1)
                        {
                            flag4 = false;
                        }
                    }

                    if (flag1)
                    {
                        Point p1 = new Point(br2 * broj, (br1 + 1) * broj);
                        Point p2 = new Point((br2 + 1) * broj, (br1 + 1) * broj);
                        g.DrawLine(pe, p1, p2);
                        g.DrawLine(pe1, p1, p2);
                    }
                    if (flag2)
                    {
                        Point p1 = new Point(br2 * broj, br1 * broj);
                        Point p2 = new Point((br2 + 1) * broj, br1 * broj);
                        g.DrawLine(pe, p1, p2);
                        g.DrawLine(pe1, p1, p2);
                    }
                    if (flag3)
                    {
                        Point p1 = new Point((br2 + 1) * broj, br1 * broj);
                        Point p2 = new Point((br2 + 1) * broj, (br1 + 1) * broj);
                        g.DrawLine(pe, p1, p2);
                        g.DrawLine(pe1, p1, p2);
                    }
                    if (flag4)
                    {
                        Point p1 = new Point(br2 * broj, br1 * broj);
                        Point p2 = new Point(br2 * broj, (br1 + 1) * broj);
                        g.DrawLine(pe, p1, p2);
                        g.DrawLine(pe1, p1, p2);
                    }
                }
            }
            Figura gr = po.Granica;

            for (int k = 0; k < po.Granica.Kocki.Length; k++)
            {
                int       br1 = gr.Kocki[k].PozicijaX;
                int       br2 = gr.Kocki[k].PozicijaY;
                Rectangle r   = new Rectangle(broj * br2, broj * br1, broj, broj);
                g.FillRectangle(gr.B, r);
                bool f1 = true;
                bool f2 = true;
                bool f3 = true;
                bool f4 = true;
                for (int i = 0; i < gr.Kocki.Length; i++)
                {
                    Kocka kc = gr.Kocki[i];
                    if (kc.PozicijaX == br1 + 1 && kc.PozicijaY == br2)
                    {
                        f1 = false;
                    }
                    if (kc.PozicijaX == br1 - 1 && kc.PozicijaY == br2)
                    {
                        f2 = false;
                    }
                    if (kc.PozicijaX == br1 && kc.PozicijaY == br2 + 1)
                    {
                        f3 = false;
                    }
                    if (kc.PozicijaX == br1 && kc.PozicijaY == br2 - 1)
                    {
                        f4 = false;
                    }
                }

                if (f1)
                {
                    Point p1 = new Point(br2 * broj, (br1 + 1) * broj);
                    Point p2 = new Point((br2 + 1) * broj, (br1 + 1) * broj);
                    g.DrawLine(pe, p1, p2);
                    g.DrawLine(pe1, p1, p2);
                }
                if (f2)
                {
                    Point p1 = new Point(br2 * broj, br1 * broj);
                    Point p2 = new Point((br2 + 1) * broj, br1 * broj);
                    g.DrawLine(pe, p1, p2);
                    g.DrawLine(pe1, p1, p2);
                }
                if (f3)
                {
                    Point p1 = new Point((br2 + 1) * broj, br1 * broj);
                    Point p2 = new Point((br2 + 1) * broj, (br1 + 1) * broj);
                    g.DrawLine(pe, p1, p2);
                    g.DrawLine(pe1, p1, p2);
                }
                if (f4)
                {
                    Point p1 = new Point(br2 * broj, br1 * broj);
                    Point p2 = new Point(br2 * broj, (br1 + 1) * broj);
                    g.DrawLine(pe, p1, p2);
                    g.DrawLine(pe1, p1, p2);
                }
            }

            Figura c = po.Cel;

            for (int l = 0; l < c.Kocki.Length; l++)
            {
                int       br1 = c.Kocki[l].PozicijaX;
                int       br2 = c.Kocki[l].PozicijaY;
                Rectangle r   = new Rectangle(broj * br2, broj * br1, broj, broj);
                g.FillRectangle(c.B, r);
                bool f1 = true;
                bool f2 = true;
                bool f3 = true;
                bool f4 = true;
                for (int i = 0; i < c.Kocki.Length; i++)
                {
                    Kocka kc = c.Kocki[i];
                    if (kc.PozicijaX == br1 + 1 && kc.PozicijaY == br2)
                    {
                        f1 = false;
                    }
                    if (kc.PozicijaX == br1 - 1 && kc.PozicijaY == br2)
                    {
                        f2 = false;
                    }
                    if (kc.PozicijaX == br1 && kc.PozicijaY == br2 + 1)
                    {
                        f3 = false;
                    }
                    if (kc.PozicijaX == br1 && kc.PozicijaY == br2 - 1)
                    {
                        f4 = false;
                    }
                }

                if (f1)
                {
                    Point p1 = new Point(br2 * broj, (br1 + 1) * broj);
                    Point p2 = new Point((br2 + 1) * broj, (br1 + 1) * broj);
                    g.DrawLine(pe, p1, p2);
                    g.DrawLine(pe1, p1, p2);
                }
                if (f2)
                {
                    Point p1 = new Point(br2 * broj, br1 * broj);
                    Point p2 = new Point((br2 + 1) * broj, br1 * broj);
                    g.DrawLine(pe, p1, p2);
                    g.DrawLine(pe1, p1, p2);
                }
                if (f3)
                {
                    Point p1 = new Point((br2 + 1) * broj, br1 * broj);
                    Point p2 = new Point((br2 + 1) * broj, (br1 + 1) * broj);
                    g.DrawLine(pe, p1, p2);
                    g.DrawLine(pe1, p1, p2);
                }
                if (f4)
                {
                    Point p1 = new Point(br2 * broj, br1 * broj);
                    Point p2 = new Point(br2 * broj, (br1 + 1) * broj);
                    g.DrawLine(pe, p1, p2);
                    g.DrawLine(pe1, p1, p2);
                }
            }
        }