Exemplo n.º 1
0
        private void cbPocetnaPop_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbPocetnaPop.SelectedItem == null)
            {
                return;
            }

            PocetnaPopulacija pocetnaPop = (cbPocetnaPop.SelectedItem as TagTekst <PocetnaPopulacija>).tag;
            var jezik = Postavke.Jezik[Kontekst.FormNovaIgra];

            lblBrKolonija.Text = jezik["lblBrKolonija"].tekst() + ": " + pocetnaPop.BrKolonija;
            lblPopulacija.Text = jezik["lblPopulacija"].tekst() + ": " + Fje.PrefiksFormater(pocetnaPop.Populacija);
        }
Exemplo n.º 2
0
        private void btnKreni_Click(object sender, EventArgs e)
        {
            int brIgraca = cbBrIgraca.SelectedIndex + 2;

            Postavke.ProslaIgra.BrIgraca     = brIgraca;
            Postavke.ProslaIgra.ImeIgraca    = txtIme.Text;
            Postavke.ProslaIgra.Organizacija = cbOrganizacija.SelectedIndex;
            Postavke.ProslaIgra.PocetnaPop   = cbPocetnaPop.SelectedIndex;
            Postavke.ProslaIgra.VelicinaMape = cbVelicinaMape.SelectedIndex;

            Vadjenje <Organizacija> organizacije = new Vadjenje <Organizacija>();

            for (int i = 0; i < Organizacija.lista.Count; i++)
            {
                if (i != cbOrganizacija.SelectedIndex)
                {
                    organizacije.dodaj(Organizacija.lista[i]);
                }
            }

            Vadjenje <Color> boje = new Vadjenje <Color>();

            foreach (Color boja in Igrac.BojeIgraca)
            {
                boje.dodaj(boja);
            }

            igraci.Add(new Igrac.ZaStvoriti(Igrac.Tip.COVJEK, txtIme.Text, Organizacija.lista[cbOrganizacija.SelectedIndex], boje.izvadi()));
            for (int i = 1; i < brIgraca; i++)
            {
                igraci.Add(new Igrac.ZaStvoriti(Igrac.Tip.RACUNALO, "Komp " + i, organizacije.izvadi(), boje.izvadi()));
            }

            mapa = new Mapa.GraditeljMape(
                cbVelicinaMape.SelectedIndex,
                brIgraca);

            PocetnaPop = (cbPocetnaPop.SelectedItem as TagTekst <PocetnaPopulacija>).tag;

            this.DialogResult = DialogResult.OK;
            this.Close();
        }
Exemplo n.º 3
0
        public IgraZvj(List <Igrac.ZaStvoriti> igraci, Mapa.GraditeljMape mapa, PocetnaPopulacija pocetnaPop)
        {
            this.igraci        = new List <Igrac>();
            this.mapa          = mapa.mapa;
            trenutniIgracIndex = 0;
            fazaIgre           = FazaIgre.NoviKrug;
            brKruga            = 0;
            tempPoeniRazvoja   = new long[igraci.Count];
            tempPoeniIstraz    = new long[igraci.Count];
            konflikti          = new Queue <Konflikt>();
            osnovniEfekti      = PodaciAlat.ucitajBazuEfekata();

            foreach (Igrac.ZaStvoriti igrac in igraci)
            {
                if (igrac.tip == Igrac.Tip.COVJEK)
                {
                    this.igraci.Add(igrac.stvoriIgraca(this.igraci.Count));
                }
            }

            foreach (Igrac.ZaStvoriti igrac in igraci)
            {
                if (igrac.tip == Igrac.Tip.RACUNALO)
                {
                    this.igraci.Add(igrac.stvoriRacunalnogIgraca(this.igraci.Count));
                }
            }

            Vadjenje <Zvijezda> pocetnePozicije = new Vadjenje <Zvijezda>();

            foreach (Zvijezda pl in mapa.pocetnePozicije)
            {
                pocetnePozicije.dodaj(pl);
            }

            for (int i = 0; i < igraci.Count; i++)
            {
                this.igraci[i].izracunajEfekte(this);
                postaviIgraca(this.igraci[i], pocetnePozicije.izvadi(), pocetnaPop);
                this.igraci[i].staviNoveTehnologije(this);
                this.igraci[i].izracunajPoeneIstrazivanja(this);
                this.igraci[i].staviPredefiniraneDizajnove();
            }

            foreach (Zvijezda zvj in this.mapa.zvijezde)
            {
                foreach (Planet pl in zvj.planeti)
                {
                    if (pl.kolonija != null)
                    {
                        pl.kolonija.resetirajEfekte();
                    }
                }
                zvj.IzracunajEfekte();

                //	Za potrebe debugiranja

                /* for (int i = 0; i < igraci.Count; i++)
                 *      this.igraci[i].posjeceneZvjezde.Add(zvj); */
            }
        }
Exemplo n.º 4
0
        private void postaviIgraca(Igrac igrac, Zvijezda pocetnaZvj, PocetnaPopulacija pocetnaPop)
        {
            igrac.odabranaZvijezda = pocetnaZvj;
            igrac.posjeceneZvjezde.Add(pocetnaZvj);
            pocetnaZvj.Naseli(igrac);

            List <PotencijalnaPocetnaKolonija> potencijalneKolonije = new List <PotencijalnaPocetnaKolonija>();

            foreach (Planet pl in pocetnaZvj.planeti)
            {
                if (pl.tip != Planet.Tip.NIKAKAV)
                {
                    Dictionary <string, double> efekti = new Kolonija(igrac, pl, 1000, 1000).maxEfekti();
                    potencijalneKolonije.Add(new PotencijalnaPocetnaKolonija(
                                                 pl,
                                                 efekti[Kolonija.BrRadnika] / efekti[Kolonija.PopulacijaBr],
                                                 efekti[Kolonija.PopulacijaMax],
                                                 efekti[Kolonija.RudePoRudaru]));
                }
            }

            potencijalneKolonije.Sort(
                (k1, k2) =>
                (k1.prikladnost != k2.prikladnost) ?
                -(k1.prikladnost).CompareTo(k2.prikladnost) :
                -(k1.rudePoRudaru).CompareTo(k2.rudePoRudaru));

            if (potencijalneKolonije.Count > pocetnaPop.BrKolonija)
            {
                potencijalneKolonije.RemoveRange(pocetnaPop.BrKolonija, potencijalneKolonije.Count - pocetnaPop.BrKolonija);
            }

            double[] dodjeljenaPop = new double[potencijalneKolonije.Count];
            double   preostalaPop  = pocetnaPop.Populacija;
            double   ukupnaPop     = pocetnaPop.Populacija;
            double   sumaDobrota   = 0;

            for (int i = 0; i < dodjeljenaPop.Length; i++)
            {
                sumaDobrota += potencijalneKolonije[i].prikladnost;
            }

            for (int i = 0; i < dodjeljenaPop.Length; i++)
            {
                double dodjela = ukupnaPop * potencijalneKolonije[i].prikladnost / sumaDobrota;
                dodjela          = Math.Floor(Math.Min(dodjela, potencijalneKolonije[i].populacijaMax));
                preostalaPop    -= dodjela;
                dodjeljenaPop[i] = dodjela;
            }

            int najboljiPlanet = 0;

            for (int i = 0; i < dodjeljenaPop.Length; i++)
            {
                double dodjela = Math.Floor(
                    Math.Min(
                        preostalaPop,
                        potencijalneKolonije[i].populacijaMax - dodjeljenaPop[i])
                    );

                preostalaPop     -= dodjela;
                dodjeljenaPop[i] += dodjela;

                if (dodjeljenaPop[i] > dodjeljenaPop[najboljiPlanet])
                {
                    najboljiPlanet = i;
                }
            }

            for (int i = 0; i < dodjeljenaPop.Length; i++)
            {
                Planet pl = potencijalneKolonije[i].planet;

                pl.kolonija = new Kolonija(
                    igrac,
                    pl,
                    (long)dodjeljenaPop[i],
                    (long)Math.Floor(dodjeljenaPop[i] * pocetnaPop.UdioRadnihMjesta));

                igrac.kolonije.Add(pl.kolonija);
            }

            igrac.OdabranPlanet = potencijalneKolonije[najboljiPlanet].planet;
        }