Ejemplo n.º 1
0
        private void button1_Click(object sender, EventArgs e)
        {
            Random r = new Random();
            int    brojac_za_crtanje = 1;
            int    brcvorova         = (int)numericUpDown1.Value;
            int    crt = 0;

            if (brcvorova == 1)
            {
                crt = 1;
            }
            if (brcvorova == 2 || brcvorova == 3)
            {
                crt = 2;
            }
            if (brcvorova == 4)
            {
                crt = 3;
            }
            int y = 7;

            for (int i = 0; i < 2; i++)
            {
                int x = 12;
                for (int j = 0; j < crt + 1; j++)
                {
                    Cvor c = new Cvor(idBrojac++, x, y);
                    sema.cvorovi.Add(c);
                    c.zaCrtanje = brojac_za_crtanje++;
                    x          += 10;
                }
                y += 13;
            }
            int numNodes = sema.cvorovi.Count;

            for (int i = 0; i < numNodes / 2; i++)
            {
                Grana g = null;
                if (i != (numNodes / 2 - 1))
                {
                    g = new Grana(idGra++, sema.cvorovi[i], sema.cvorovi[i + 1], 0);
                    sema.cvorovi[i].grane.Add(g);
                    sema.grane.Add(g);
                }
            }
            for (int i = numNodes / 2; i < numNodes; i++)
            {
                Grana g = null;
                if (i != (numNodes - 1))
                {
                    g = new Grana(idGra++, sema.cvorovi[i], sema.cvorovi[i + 1], 0);
                    sema.cvorovi[i].grane.Add(g);
                    sema.grane.Add(g);
                }
            }
            for (int i = 0; i < numNodes / 2; i++)
            {
                Grana g = new Grana(idGra++, sema.cvorovi[i], sema.cvorovi[i + numNodes / 2], 0);
                sema.cvorovi[i].grane.Add(g);
                sema.grane.Add(g);
            }
            int rand = r.Next(10);

            if (brcvorova == 3)
            {
                int iz  = 0;
                int odr = 4;
                if (rand < 2)
                {
                    iz  = 0;
                    odr = 4;
                }
                else if (rand < 4)
                {
                    iz  = 1;
                    odr = 3;
                }
                else if (rand < 6)
                {
                    iz  = 1;
                    odr = 5;
                }
                else
                {
                    iz  = 2;
                    odr = 4;
                }
                Grana g = new Grana(idGra++, sema.cvorovi[iz], sema.cvorovi[odr], 0);
                sema.cvorovi[iz].grane.Add(g);
                sema.grane.Add(g);
            }
            if (brcvorova == 4)
            {
                int iz  = 0;
                int odr = 4;
                if (rand < 3)
                {
                    iz  = 1;
                    odr = 6;
                }
                else if (rand < 6)
                {
                    iz  = 2;
                    odr = 5;
                }
                else
                {
                    iz  = -1;
                    odr = -1;
                }
                if (iz != -1 && odr != -1)
                {
                    Grana g = new Grana(idGra++, sema.cvorovi[iz], sema.cvorovi[odr], 0);
                    sema.cvorovi[iz].grane.Add(g);
                    sema.grane.Add(g);
                }
            }
            foreach (Grana g in sema.grane)
            {
                g.obradjena = false;
                g.struja    = 0;
            }
            foreach (Cvor c in sema.cvorovi)
            {
                c.bot     = true;
                c.indexer = -2;
                c.napon   = 0;
            }
            sema.izbaciPipkeIOstrva(new ListBox());
            List <Poteg> potezi = new List <Poteg>();

            potezi = sema.pot;
            int brojacOtp = 1, brojacStrujni = 1, brojacNapon = 1;

            if (potezi.Count == 1)
            {
                if (r.Next(8) == 0)
                {
                    Komponenta k = new StrujniGenerator(r.Next(6) + 1, "J" + brojacStrujni.ToString(), true);
                    brojacStrujni++;
                    if (r.Next(2) == 0)
                    {
                        k.polaritet      = potezi[0].superGrana[0].izvor;
                        k.frontPolaritet = potezi[0].superGrana[0].izvor;
                    }
                    else
                    {
                        k.polaritet      = potezi[0].superGrana[0].odrediste;
                        k.frontPolaritet = potezi[0].superGrana[0].odrediste;
                    }
                    k.namestiSliku(potezi[0].superGrana[0].izvor, potezi[0].superGrana[0].odrediste);
                    potezi[0].superGrana[0].komponente.Add(k);
                    potezi[0].superGrana[0].brojkom++;
                }
                foreach (Grana g in potezi[0].superGrana)
                {
                    if (r.Next(10) != 0)
                    {
                        int koliko = r.Next(10);
                        if (koliko < 7)
                        {
                            koliko = 1;
                        }
                        else
                        {
                            koliko = 2;
                        }
                        for (int i = 0; i < koliko; i++)
                        {
                            int ran = r.Next(100);
                            if (ran < 62)
                            {
                                Komponenta k = new Otpornik(r.Next(10) + 1, "R" + brojacOtp.ToString());
                                k.namestiSliku(g.izvor, g.odrediste);
                                brojacOtp++;
                                g.komponente.Add(k);
                                g.brojkom++;
                            }
                            else
                            {
                                Komponenta k = new NaponskiGenerator(r.Next(10) + 1, "E" + brojacNapon.ToString(), true);
                                brojacNapon++;
                                if (r.Next(2) == 0)
                                {
                                    k.polaritet      = g.izvor;
                                    k.frontPolaritet = g.izvor;
                                }
                                else
                                {
                                    k.polaritet      = g.odrediste;
                                    k.frontPolaritet = g.odrediste;
                                }
                                k.namestiSliku(g.izvor, g.odrediste);
                                g.komponente.Add(k);
                                g.brojkom++;
                            }
                        }
                    }
                }
                this.p.godina = idBrojac;
                this.p.tezina = idGra;
                this.Close();
                return;
            }
            foreach (Poteg p in potezi)
            {
                if (p.superGrana.Count == 1)
                {
                    int koliko = r.Next(10);
                    if (koliko < 7)
                    {
                        koliko = 1;
                    }
                    else
                    {
                        koliko = 2;
                    }
                    for (int i = 0; i < koliko; i++)
                    {
                        int ran = r.Next(100);
                        if (ran < 50)
                        {
                            Komponenta k = new Otpornik(r.Next(10) + 1, "R" + brojacOtp.ToString());
                            k.namestiSliku(p.superGrana[0].izvor, p.superGrana[0].odrediste);
                            brojacOtp++;
                            p.superGrana[0].komponente.Add(k);
                            p.superGrana[0].brojkom++;
                        }
                        else if (ran < 84)
                        {
                            Komponenta k = new NaponskiGenerator(r.Next(10) + 1, "E" + brojacNapon.ToString(), true);
                            brojacNapon++;
                            if (r.Next(2) == 0)
                            {
                                k.polaritet      = p.superGrana[0].izvor;
                                k.frontPolaritet = p.superGrana[0].izvor;
                            }
                            else
                            {
                                k.polaritet      = p.superGrana[0].odrediste;
                                k.frontPolaritet = p.superGrana[0].odrediste;
                            }
                            k.namestiSliku(p.superGrana[0].izvor, p.superGrana[0].odrediste);
                            p.superGrana[0].komponente.Add(k);
                            p.superGrana[0].brojkom++;
                        }
                        else if (p.superGrana[0].isStrujni() == false)
                        {
                            Komponenta k = new StrujniGenerator(r.Next(6) + 1, "J" + brojacStrujni.ToString(), true);
                            brojacStrujni++;
                            if (r.Next(2) == 0)
                            {
                                k.polaritet      = p.superGrana[0].izvor;
                                k.frontPolaritet = p.superGrana[0].izvor;
                            }
                            else
                            {
                                k.polaritet      = p.superGrana[0].odrediste;
                                k.frontPolaritet = p.superGrana[0].odrediste;
                            }
                            k.namestiSliku(p.superGrana[0].izvor, p.superGrana[0].odrediste);
                            p.superGrana[0].komponente.Add(k);
                            p.superGrana[0].brojkom++;
                        }
                    }
                }
                else
                {
                    for (int ee = 0; ee < p.superGrana.Count; ee++)
                    {
                        if (ee == 1)
                        {
                            int koliko = r.Next(10);
                            if (koliko < 7)
                            {
                                koliko = 1;
                            }
                            else
                            {
                                koliko = 2;
                            }
                            for (int i = 0; i < koliko; i++)
                            {
                                int ran = r.Next(100);
                                if (ran < 50)
                                {
                                    Komponenta k = new Otpornik(r.Next(10) + 1, "R" + brojacOtp.ToString());
                                    k.namestiSliku(p.superGrana[1].izvor, p.superGrana[1].odrediste);
                                    brojacOtp++;
                                    p.superGrana[1].komponente.Add(k);
                                    p.superGrana[1].brojkom++;
                                }
                                else if (ran < 84)
                                {
                                    Komponenta k = new NaponskiGenerator(r.Next(10) + 1, "E" + brojacNapon.ToString(), true);
                                    brojacNapon++;
                                    if (r.Next(2) == 0)
                                    {
                                        k.polaritet      = p.superGrana[1].izvor;
                                        k.frontPolaritet = p.superGrana[1].izvor;
                                    }
                                    else
                                    {
                                        k.polaritet      = p.superGrana[1].odrediste;
                                        k.frontPolaritet = p.superGrana[1].odrediste;
                                    }
                                    k.namestiSliku(p.superGrana[1].izvor, p.superGrana[1].odrediste);
                                    p.superGrana[1].komponente.Add(k);
                                    p.superGrana[1].brojkom++;
                                }
                                else if (p.superGrana[1].isStrujni() == false)
                                {
                                    Komponenta k = new StrujniGenerator(r.Next(6) + 1, "J" + brojacStrujni.ToString(), true);
                                    brojacStrujni++;
                                    if (r.Next(2) == 0)
                                    {
                                        k.polaritet      = p.superGrana[1].izvor;
                                        k.frontPolaritet = p.superGrana[1].izvor;
                                    }
                                    else
                                    {
                                        k.polaritet      = p.superGrana[1].odrediste;
                                        k.frontPolaritet = p.superGrana[1].odrediste;
                                    }
                                    k.namestiSliku(p.superGrana[1].izvor, p.superGrana[1].odrediste);
                                    p.superGrana[1].komponente.Add(k);
                                    p.superGrana[1].brojkom++;
                                }
                            }
                        }
                        else
                        {
                            if (r.Next(3) == 0)
                            {
                                Komponenta k = new Otpornik(r.Next(10) + 1, "R" + brojacOtp.ToString());
                                k.namestiSliku(p.superGrana[ee].izvor, p.superGrana[ee].odrediste);
                                brojacOtp++;
                                p.superGrana[ee].komponente.Add(k);
                                p.superGrana[ee].brojkom++;
                            }
                        }
                    }
                }
            }
            this.p.godina = idBrojac;
            this.p.tezina = idGra;
            this.Close();
        }